代码之家  ›  专栏  ›  技术社区  ›  schaermu

在IIS 7中具有安全模式transportWithMessageCredential的wshttpbinding不工作

  •  1
  • schaermu  · 技术社区  · 16 年前

    我们目前正在将WCF服务从IIS 6迁移到IIS 7。该服务包含一些用于内部流目的的非SSL终结点和一些使用SSL保护的公开终结点。

    公共的安全端点是使用wshttpbinding和security mode=“TransportWithMessageCredential”实现的。绑定内容如下:

    <wsHttpBinding>
      <binding name="CustomSecurityBinding">
        <security mode="TransportWithMessageCredential">
          <message clientCredentialType="UserName" />
        </security>
      </binding>
    </wsHttpBinding>
    

    凭证通过自定义用户存储库进行验证。

    将服务部署到IIS 7(64位win2k8)后,所有服务(basichttpbindings)都会正确响应,wshttpbindings除外。如果使用https触发,我们总是会得到一个HTTP400状态代码(错误的请求)。

    在IIS中启用跟踪之后,我们可以缩小问题范围,尽管跟踪中的消息实际上没有帮助:

    MODULE_SET_RESPONSE_ERROR_STATUS Warning
    ModuleName="ManagedPipelineHandler", Notification="EXECUTE_REQUEST_HANDLER",
    HttpStatus="400", HttpReason="Bad Request", HttpSubStatus="0", ErrorCode="Der
    Vorgang wurde erfolgreich beendet. (0x0)", ConfigExceptionInfo="" 
    

    迄今为止完成的步骤:

    • 在IIS 7中重新安装了WCF扩展(ServiceModelReg.exe-r-y)
    • 已为主机启用HTTPS协议,已向主机添加自签名证书
    • 在WCF配置中使用DNS/Identity设置
    • 向WCF服务配置添加了基地址

    经过两个小时的谷歌搜索和努力使这项工作,我问你作为最后的希望:有人知道IIs7的这种奇怪的行为吗?

    1 回复  |  直到 16 年前
        1
  •  2
  •   Ta01    16 年前

    是否已验证在applicationhost.config(%windir%\system32\inetsrv\config\schema\iis\schema.xml)中配置了SSL绑定,以及http.sys存储区包含绑定的有效证书具有和存储名称?其次,真正的错误可能被400错误掩盖,您是否尝试在配置中更改wshttpbinding,以将maxBufferPoolSize和maxReceivedMessageSize增加到一些非常高的值,并查看这是否继续?