6

我目前部署了一个 WCF 服务,并启用了 basicHttpBindings 和 SSL。但是现在我需要启用 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>

请在这件事上给予我帮助

4

3 回答 3

8

如果您想使用 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>
于 2010-04-16T05:55:24.787 回答
-1

转到您的 IIS 主机并右键单击您的应用程序并选择 MangeApplication 和高级设置,然后在启用的协议中添加“wsHttpBinding”。

于 2013-04-24T06:10:15.887 回答
-1

好吧,<security mode="None">那么将修复“预期的 Https 而不是 HTTP 错误。

于 2012-06-19T08:28:50.583 回答