【问题标题】:Authorization header missing when calling WCF web service on IIS 7在 IIS 7 上调用 WCF Web 服务时缺少授权标头
【发布时间】:2011-06-20 19:09:31
【问题描述】:

我们有一个 WCF Web 服务,它采用“用户名:密码”授权标头。该服务在我的开发 Windows 7 机器和生产中的 Windows Server 2003 机器上运行良好。

但是,我们的开发和新生产服务器是 Windows Server 2008,服务无法接收授权标头。

您可以在下面看到来自 Fiddler 的原始请求包含 Authorization 标头。

POST http://servername/service.svc/soap HTTP/1.1
内容类型:文本/xml; charset=utf-8
授权:test:test
VsDebuggerCausalityData:uIDPozpQ7mbpOVRFu79Tl0h3mkIAAAAAJMavDzJlIkqyjJDSIIxdVuKNB0y6n29OvukFtyRt0wwACQAA
SOAPAction:“...”
主机:服务器名称
内容长度:152
期望:100-继续
接受编码:gzip、deflate
连接:保持活动状态

我还没有成功启用 IIS 高级日志记录以查看是否可以在服务器上获取任何额外信息。

IIS 网站配置为匿名身份验证。

服务实现了IAuthorizationPolicyEvaluate方法肯定被调用了,这就是缺少授权信息的地方。

感觉好像我在 IIS 中配置错误,但我不知道是什么!任何帮助将不胜感激。

【问题讨论】:

  • 从 Windows Server 2003 切换到 2008 时,您是否也从 IIS 6 切换到 7?如果是这样,我怀疑这与 IIS 版本有关,而不是与 Windows Server 版本有关。您可以考虑相应地更改问题的标题。
  • 好点。构建该服务的前同事还告诉我,它最初在开发 Windows Server 2008 服务器上工作。这只会让这更令人沮丧。
  • 确保 IIS 服务器处理基本授权,我认为它默认是禁用的。
  • 生产服务器上缺少此功能,但在开发服务器上已启用。好像没什么区别。

标签: wcf iis-7 authorization


【解决方案1】:

原来我正在处理两个不同的问题。

在开发服务器上,我发现 .NET 4.0 安装被破坏了。这是由brilliant tool 诊断的。

在两台服务器上,我将管道模式从 Classic 更改为 Integrated,因为没有人知道为什么一开始就将其设置为 Classic。稍后对网络配置进行一些调整,服务就可以正常工作了!

该解决方案可能还需要基本身份验证,正如 Richard L 所建议的那样,因为生产服务器中缺少基本身份验证。请注意,服务网站本身未启用基本身份验证。

试图让它工作的几天非常令人沮丧。

【讨论】:

    猜你喜欢
    • 2012-09-04
    • 2012-10-27
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 2011-05-04
    • 1970-01-01
    相关资源
    最近更新 更多