【问题标题】:Referencing a Published WCF Service引用已发布的 WCF 服务
【发布时间】:2014-12-19 15:39:08
【问题描述】:

我已按照http://msdn.microsoft.com/en-us/library/bb386386.aspx 中的“演练:创建和访问 WCF 服务”来创建 WCF 服务库。我在 WCF 测试客户端中对其进行了测试。然后在另一个最终我想使用这个 WCF 的桌面应用程序(我们称之为 A)中,我添加了 WCF 测试客户端提供的服务参考

http://localhost:8733/...  

这也奏效了。

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

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

    \mywebaddress.example.com\wwwroot\myWCFService

看起来发布成功了,因为通过导航到

\\mywebaddress.example.com\wwwroot\myWCFService 

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

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

这是我尝试过的:

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

    \mywebaddress.example.com\wwwroot\myWCFService

在 Add Service Reference 的 Address 字段中,按 Go 并收到错误 An error (Details) 试图在

查找服务时发生
\\mywebaddress.example.com\wwwroot\myWCFService. 

点击详细信息时,我得到下载时出错

\\mywebaddress.example.com\wwwroot\myWCFService

访问路径

\\mywebaddress.example.com\wwwroot\myWCFService 

被拒绝。

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

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

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

然后当按下箭头按钮时,我得到 401 - Unauthorized: Access is denied due to invalid credentials.

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

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

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

在此 URL 找到 Web 服务:下载时出错

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

请求失败,HTTP 状态为 404:未找到。

【问题讨论】:

  • 我注意到您的标签中有 IIS,但您的问题中没有。这和 IIS 有什么关系?
  • 我也不确定。但我的意图是在 IIS 中发布此 WCF,并通过在我提到的文件系统中发布,它确实显示在 IIS 中。我不是 IIS 方面的专家,所以我不确定它在 IIS 中的显示方式,即使我选择了要发布的文件系统。
  • 您不必成为 IIS 专家也知道文件系统不是 IIS。
  • 而且,老实说,您不必成为 Google "publish asp.net web site" 的专家。
  • 我在 IIS 中发布了一个 Web 服务,我在 iOS、Android 和桌面应用程序中使用它没有问题。刚刚决定将 Web 服务转换为 WCF 和上面的故事......

标签: wcf iis publish


【解决方案1】:

当我刚刚使用 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 服务的唯一选项。

【讨论】:

  • 非常感谢约翰!我稍后会尝试这个并相应地更新这篇文章。
  • 我想将此 WCF 服务发布到的 IIS 与开发环境不在同一台服务器上。在这种情况下,本地 IIS 发布选项是否可行?我不这么认为。
  • 看看我的最后一段。
  • 这就是我说的,我稍后会尝试。再次感谢。
  • 我最终按照您在最后一段中的建议进行了操作,并且由于您建议的方式与我过去在 WSDL Web 服务中执行的方式非常相似,因此效果很好。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2012-05-05
  • 2011-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多