引用已发布的WCF服务

时间:2014-12-19 15:39:08

标签: wcf iis publish

我已经跟随"演练:创建和访问WCF服务"从http://msdn.microsoft.com/en-us/library/bb386386.aspx创建WCF服务库。我在WCF测试客户端测试了它。然后在另一个桌面应用程序中(让我们称之为A)最终我想使用这个WCF我添加了WCF测试客户端提供的服务引用

http://localhost:8733/...  

这也有效。

现在,我正在发布和使用已发布版本的服务参考。这是我做的,我通过

发布了WCF服务库
  1. 右键单击解决方案
  2. 选择发布
  3. 点击...
  4. 选择文件系统并输入

    \ mywebaddress.example.com \ wwwroot的\ myWCFService

  5. 看起来发布成功,因为导航到

    \\mywebaddress.example.com\wwwroot\myWCFService 
    

    在文件浏览器中,我看到创建了Web.config,.svc和bin文件夹。

    现在,我试图从我的桌面应用程序A中引用此发布的版本。我不确定我应该选择哪些选项

    以下是我的尝试:

    1. 在桌面应用程序A中选择添加服务引用,
    2. 我试过

      \ mywebaddress.example.com \ wwwroot \ myWCFService

    3. 在添加服务引用的地址字段中,按下并收到错误在尝试查找服务时发生错误(详细信息)

      \\mywebaddress.example.com\wwwroot\myWCFService. 
      

      点击详情时,我得到了下载

      的错误
      \\mywebaddress.example.com\wwwroot\myWCFService
      

      访问路径

      \\mywebaddress.example.com\wwwroot\myWCFService 
      

      被拒绝。

      如果在当前解决方案中定义了服务,请尝试构建解决方案并再次添加服务引用。

      或者,我尝试了添加服务参考中的高级选项,然后从那里添加Web参考...并在URL字段中键入

      http://www.example.com/myWCFService/ 
      

      然后当按下箭头按钮时,我得到401 - 未经授权:由于凭证无效,访问被拒绝。

      您无权使用您提供的凭据查看此目录或页面。在此URL中找到的Web服务中:值不能为null。参数名称:discoveryError& mexError。

      后一个错误是在IIS设置中我禁用了匿名身份验证。启用匿名身份验证后,错误将变为:

      403 - 禁止访问:访问被拒绝。 您无权使用您提供的凭据查看此目录或页面。

      此网址提供的网络服务:下载时出现错误

      http://www.example.com/wcfservice/_vti_bin/ListData.svc/ $元数据

      请求失败,HTTP状态为404:Not Found。

1 个答案:

答案 0 :(得分:2)

当我刚刚使用Visual Studio 2013发布WCF服务库项目时,我获得了文件系统,本地IIS和FTP站点的选项。当我选择“本地IIS”时,它会向我显示IIS Express和本地完整的IIS。

我刚刚通过选择“默认网站”并点击工具栏中的“创建Web应用程序”按钮发布到IIS。我命名了应用程序,单击“打开”,然后在主发布对话框中单击“发布”。

发布了一个bin文件夹,其中包含服务DLL及其所需的其他库,web.config和.svc文件。我能够毫无问题地浏览到.svc文件。我甚至可以将它作为服务引用添加到另一个项目中。

如果您总是要在IIS中托管您的服务,并且如果您不需要保持层的清晰分离(也许您只是编写一些简单的服务),那么我建议您使用“ WCF服务应用程序“模板而不是。这将创建一个Web项目,用于托管服务,以及服务本身所需的.svc和.cs文件。这更像是ASMX Web服务可用的唯一选项。