具有仅传输凭据安全模式的 WCF 服务,导致 IIS7 上的 HTTP 状态代码 401 错误



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

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

最后,我们通过检查默认网站上的身份验证设置设法解决了这个问题。Windows身份验证在那里被禁用。我们启用了它,服务开始工作。您可能会认为,网站设置会覆盖这一点,但事实并非如此。因此,请避免整天进行电击,并检查此设置。

干杯!

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

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

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

相关内容

  • 没有找到相关文章

最新更新