IIS 7中的安全模式TransportWithMessageCredential的WsHttpBinding无法正常工作

时间:2010-06-03 16:25:34

标签: wcf iis-7 ssl wshttpbinding

我们目前正在将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触发,我们总是会收到HTTP 400状态代码(错误请求)。

在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 service config
  • 添加了一个基地址

经过2小时的谷歌搜索并尝试完成这项工作后,我问你是最后的希望之一:有人知道IIS 7的这种奇怪行为吗?

1 个答案:

答案 0 :(得分:2)

您是否已验证在applicationHost.config(%windir%\ system32 \ inetsrv \ config \ schema \ IIS_Schema.xml)中配置了SSL绑定,并且HTTP.sys存储包含有效的证书和存储名称捆绑?其次,400错误可能会掩盖真正的错误,您是否尝试在配置中更改wsHttpBinding以将maxBufferPoolSize和maxReceivedMessageSize增加到某些极高值并查看是否继续?