【发布时间】:2014-03-19 08:56:00
【问题描述】:
我需要调用一个 Web 服务,为了便于测试,我为此创建了一个控制台应用程序。但它需要在BizTalk 中工作,它没有。
这是 app.config 文件中的一个非常简单的配置:
<basicHttpBinding>
<binding name="XXXWebService_Binding" textEncoding="utf-16">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
在调用 Web 服务之前,我需要指定 Windows 凭据:
proxy.ClientCredentials.Windows.ClientCredential.Domain = "xxx";
proxy.ClientCredentials.Windows.ClientCredential.UserName = "xxx";
proxy.ClientCredentials.Windows.ClientCredential.Password = "xxx";
这可以正常工作。
所以我需要让它在 BizTalk 中工作。我使用带有 basicHttpBinding 的 WCF 自定义适配器,其配置与我的控制台应用程序相同:
为了指定凭据,我将它们插入到 凭据 选项卡中。
当我对此进行测试时,我收到以下错误消息:
System.Net.WebException:HTTP 请求未经客户端身份验证方案“协商”的授权。从服务器收到的身份验证标头是“协商”。
这可能是什么?
在 MSDN 上(WCF-BasicHttp Adapter)我发现了这个:
Windows:Windows 集成身份验证。运行此发送端口的用户帐户用于服务验证此发送端口。
可能是忽略了正确的凭据并使用了 主机实例 的凭据(即使我可以在“传输失败”消息的上下文属性中找到正确的凭据) ?
【问题讨论】:
标签: wcf biztalk wcf-binding