2

我刚刚花了 2 天时间调试以下错误,所以我坚持我会分享我的发现。

场景是这样的:我有一个托管在 IIS7 上的 WCF 服务。该服务使用安全模式设置为 TransportCredentialOnly 的 basicHttpBinding。该网站启用了匿名身份验证和 Windows 身份验证。该网站的应用程序池在域帐户下运行,该帐户对网站的物理文件夹具有所有可能的权利。从 Internet Explorer 浏览服务的 .svc 是可行的,但是当我们尝试从客户端调用服务的方法时,我们收到错误:“HTTP 请求未经客户端身份验证方案协商”。此外,每次调用该方法时,IIS 日志都会显示 401.5 错误,这对于此安全设置来说是正常的,但它后面应该是 200,而这里不是这种情况。

最后,我们通过检查Default Website上的 Authentication 设置设法解决了这个问题。那里禁用了 Windows 身份验证。我们启用了它,服务开始工作。您会认为,网站设置会覆盖它,但它们不会。因此,请避免整天进行wiresharking,procmoning并检查此设置。

干杯!

4

1 回答 1

0

这是您需要让设置在所有层上匹配的问题:

  • 客户端上的 App.config
  • IIS 设置
  • 应用程序池标识
  • svc 文件的 NTFS 权限
  • 服务器上的 Web.Config

所有这些都需要匹配才能正常工作。

于 2012-04-27T18:59:56.597 回答