【发布时间】: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 服务库- 右键单击解决方案
- 选择发布
- 点击...
-
选择文件系统并输入
\mywebaddress.example.com\wwwroot\myWCFService
看起来发布成功了,因为通过导航到
\\mywebaddress.example.com\wwwroot\myWCFService
在文件浏览器中,我看到创建了 Web.config、.svc 和 bin 文件夹。
现在,我正在尝试从我的桌面应用程序 A 中引用此已发布版本。我不确定应该选择哪些选项
这是我尝试过的:
- 在桌面应用程序 A 中选择添加服务引用,
-
我试过了
\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 和上面的故事......