WSHttpBinding和Https问题

时间:2011-08-11 20:00:45

标签: .net wcf app-config wcf-binding wcf-security

我想同时使用Sessions和SSL,因此我设置了所有证书,并确保在WCF服务上正确设置了所有内容。我已经尝试了一切,但我似乎无法让这个工作。它抛出一个InvalidoperationException,说WsHttpBinding不能创建安全会话,我应该使用MessageSecurity而不是TransportSecurity.But我想使用Https而不是Http所以我想使用TransportSecurity。任何人都可以帮助我。提前谢谢。

WsHttpBinding的App.config:

   <wsHttpBinding>
    <binding name="WSHttpBinding">
     <reliableSession enabled="True" />
     <security mode="Transport">
      <transport clientCredentialType="None"/>
     </security>
    </binding>
   </wsHttpBinding>

编辑:我忘了提到InvalidOperationException在我尝试调用ServiceHost.Open()时发生因此Logging不会做太多好事,但是谢谢你提到它。

2 个答案:

答案 0 :(得分:3)

我没试过,只是MSDN says

  

要通过HTTPS使用可靠会话,您必须创建一个使用可靠会话和HTTPS传输的自定义绑定。

尝试文章中描述的自定义绑定。

编辑:

我使用Reflector检查了它为什么不能与WsHttpBinding一起使用。初始化安全性时,WsHttpBinding包含此代码:

if (isReliableSession && !this.IsSecureConversationEnabled())
{
    throw ...
}

这可能意味着WsHttpBinding允许在不安全的通道上使用可靠的会话,或通过信息安全和安全对话保护通道。

答案 1 :(得分:0)

我建议您启用WCF logging并使用SvcTraceViewer查看生成的日志文件。这应该为您提供有关正在发生的事情的更多详细信息,并且通常可以帮助我跟踪更困难的WCF问题。