任何人都可以清楚地解释使用之间的区别
clientCredentialType=Windows
, 和clientCredentialType=Ntlm
在托管 WCF 服务时在服务器端 Web.config 中?
我有一个basicHttpBinding
用于与现有客户端互操作的 SOAP 1.1 ( ) 服务。它使用 ASP.NET 角色,因此需要对客户端进行身份验证。
当我使用VS2005(Cassini)服务器托管服务时,我必须ClientCredentialType=Ntlm
如上所述指定,并在VS2005的项目属性中选中Ntlm身份验证框。 ClientCredentialType=Windows
不起作用 - 客户得到:
401 未经授权的错误
但是,当我在 IIS 下运行时,情况正好相反:ClientCredentialType=Windows
工作正常,但ClientCredentialType=Ntlm
失败。
谁能解释一下,最好建议一种方法,我可以使用相同的 web.config 文件在 Cassini 和 IIS 中运行服务?
更新
我的开发机器上有 .NET 3.5 SP1,它是在域中运行的 XP SP2。因此,Cassini 在域帐户下运行,而 IIS 5.1 在本地帐户下运行。
我想知道这是否与这些文章中描述的 .NET 3.5SP1 中的重大变化有关。
http://www.aspnetpro.com/newsletterarticle/2008/12/asp200812ab_l/asp200812ab_l.asp http://msmvps.com/blogs/alvin/archive/2008/11/14/net-3-5-sp1-break -change-to-wcf.aspx http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=354236
当服务器在域帐户下运行(这是我使用 Cassini 的情况 - 作为我的普通域用户帐户运行)时,情况听起来类似于clientCredentialType=Windows
失败,并且在本地帐户下运行时工作(这是我使用 IIS 的情况)。
问题是建议的修复需要更改 WCF 客户端配置文件 - 但在我的情况下,我将 SOAP 1.1 ( basicHttpBinding
) 与非 WCF 客户端一起使用。