我刚刚花了 2 天时间调试以下错误,所以我坚持我会分享我的发现。
场景是这样的:我有一个托管在 IIS7 上的 WCF 服务。该服务使用安全模式设置为 TransportCredentialOnly 的 basicHttpBinding。该网站启用了匿名身份验证和 Windows 身份验证。该网站的应用程序池在域帐户下运行,该帐户对网站的物理文件夹具有所有可能的权利。从 Internet Explorer 浏览服务的 .svc 是可行的,但是当我们尝试从客户端调用服务的方法时,我们收到错误:“HTTP 请求未经客户端身份验证方案协商”。此外,每次调用该方法时,IIS 日志都会显示 401.5 错误,这对于此安全设置来说是正常的,但它后面应该是 200,而这里不是这种情况。
最后,我们通过检查Default Website上的 Authentication 设置设法解决了这个问题。那里禁用了 Windows 身份验证。我们启用了它,服务开始工作。您会认为,网站设置会覆盖它,但它们不会。因此,请避免整天进行wiresharking,procmoning并检查此设置。
干杯!