【发布时间】:2009-06-10 21:13:13
【问题描述】:
我有一个小型 WCF Web 服务,它与内置 WCF 服务主机一起工作,并由 Visual Studio 2008 内置开发 Web 服务器托管。
在这些托管环境中,我依赖 WCF 测试客户端来调用服务方法。
现在我的下一阶段测试遇到了问题:
我将它托管在我的 WinXP 开发机器上的 IIS 5.1 中,我认为问题可能是我无法继续使用 WCF 测试客户端了。这是发生了什么:
案例 1:“匿名访问”已检查(启用)
WCF 测试客户端 UI 正确显示,显示 WebMethods 和 INVOKE 按钮。 然而,当我单击 INVOKE 时,它无法连接到需要 Windows 身份验证的后端数据存储(第 3 方产品)。我可以发布从 product.DLL 返回的错误,但我认为它不相关。
案例 2:“匿名访问”未选中(禁用)
WCF 测试客户端 UI 甚至无法正确初始化。我对此的研究告诉我,MEX(WS-Metadata Exchange)需要“匿名访问”并且(显然)WCF 测试客户端需要 MEX。以下是返回错误的关键 sn-ps:
Error: Cannot obtain Metadata from http://localhost/wcfiishost
The remote server returned an error: (401) Unauthorized.HTTP GET Error
URI: http://localhost/wcfiishost
There was an error downloading 'http://localhost/wcfiishost'.
The request failed with the error message:
Security settings for this service require 'Anonymous' Authentication but it is not enabled for the IIS application that hosts this service
有很多关于绑定选项、消息安全等的解释以及我真的不明白的东西。以下是我对自己所处位置的看法,但我希望得到您的意见:
(a) 因为我知道我的 WCF Web 服务必须配置为使用 Windows 身份验证,所以我得出结论,在 IIS 中托管我的服务时,我无法继续使用 WCF 测试客户端。它实际上已经超过了它对我的用处。我只需要花时间编写一个 Web 客户端,因为如果没有 Anonymous,WCFTestClient 将无法工作。
(或)
(b) 如果 WCF 测试客户端和托管服务配置正确,则可以使用 WCF 测试客户端(我只是不知道有什么特殊的配置技术)。
哪个是正确的?是时候停止使用 WCFTestClient 了,还是有办法同时使用它?提前感谢您的建议。
编辑:09 年 6 月 11 日
我还能提供什么帮助其他人帮助我解决这个问题吗?
【问题讨论】:
-
PS:您的服务使用哪种绑定?您可以尝试使用“basicHttpBinding”(如果您还没有使用它)吗?
标签: wcf metadata kerberos mex wcftestclient