如何使用wsHttpBidning和仅传输安全性启用WCF会话

时间:2010-04-16 05:05:48

标签: .net wcf wcf-security wshttpbinding wcf-sessions

我目前使用basicHttpBindings和SSL启用了WCF服务。但是现在我需要启用wcf会话(而不是asp会话),所以我将服务转移到了wsHttpBidnings但是没有启用会话

我已经设置了

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]

但是当我设置

SessionMode=SessionMode.Required

关于服务合同

  

合同需要Session,但是Binding   'WSHttpBinding'不支持它或   未正确配置以支持   它

以下是WSHttpBinding的定义

<wsHttpBinding>
    <binding name="wsHttpBinding">
      <readerQuotas maxStringContentLength="10240" />
      <reliableSession enabled="false" />
      <security mode="Transport">
        <transport clientCredentialType="None">
          <extendedProtectionPolicy policyEnforcement="Never" />
        </transport>
      </security>
    </binding>
  </wsHttpBinding>

请帮我解决这个问题

3 个答案:

答案 0 :(得分:7)

如果你想要与wsHttpBinding“会话”,你必须使用可靠的消息传递或安全会话。

要在wsHttpBinding上启用会话,您需要可靠的消息传递,为此,您需要更改可靠会话的设置(看起来像此<reliableSession/>的标记) - 这样您的新配置就会显示像这样:

<wsHttpBinding>
    <binding name="wsHttpBinding">
      <readerQuotas maxStringContentLength="10240" />
      <reliableSession enabled="true" />
      <security mode="Transport">
        <transport clientCredentialType="None">
          <extendedProtectionPolicy policyEnforcement="Never" />
        </transport>
      </security>
    </binding>
  </wsHttpBinding>

答案 1 :(得分:-1)

好了<security mode="None">然后“Https预期而不是HTTP错误将被修复。

答案 2 :(得分:-1)

转到您的IIS主机并右键单击您的应用程序并选择MangeApplication和Advanced Settings,然后在Enabled Protocols中添加“wsHttpBinding”。