我想同时使用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不会做太多好事,但是谢谢你提到它。
答案 0 :(得分:3)
我没试过,只是MSDN says:
要通过HTTPS使用可靠会话,您必须创建一个使用可靠会话和HTTPS传输的自定义绑定。
尝试文章中描述的自定义绑定。
编辑:
我使用Reflector检查了它为什么不能与WsHttpBinding
一起使用。初始化安全性时,WsHttpBinding
包含此代码:
if (isReliableSession && !this.IsSecureConversationEnabled())
{
throw ...
}
这可能意味着WsHttpBinding
允许在不安全的通道上使用可靠的会话,或通过信息安全和安全对话保护通道。
答案 1 :(得分:0)
我建议您启用WCF logging并使用SvcTraceViewer查看生成的日志文件。这应该为您提供有关正在发生的事情的更多详细信息,并且通常可以帮助我跟踪更困难的WCF问题。