合同需要Session,但Binding'BasicHttpBinding'不支持它,或者没有正确配置以支持它

时间:2010-12-10 08:33:29

标签: wcf

当我在servicecontract中使用SessionMode = SessionMode.Required时,我收到此错误

  

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

有人告诉我一个解决方案吗?

2 个答案:

答案 0 :(得分:10)

如列出here,请选择wsHttpBindingNetTcpBinding.WSHttpBinding绑定。

答案 1 :(得分:10)

此错误消息很少清除。答案是这样的,basichttpbinding不支持会话。因此,如果要使用它,则必须使用以下属性。 [ServiceContract(SessionMode = SessionMode.Allowed)]

这意味着,如果您尝试配置多个绑定,如basichttp,wshttp,net.tcp,WCF将自动启用除basichttp绑定之外的会话。所以如果你把SessionMode.Required而不是Allowed,那么你就不会使用basichttpbinding。

那就是说,解决这个问题通常需要这样的事情:

<system.serviceModel>
    <protocolMapping>
      <add scheme="http" binding="wsHttpBinding" bindingConfiguration="wsHttpBindingConfiguration" />
    </protocolMapping>
    <bindings>
      <wsHttpBinding>
        <binding name="wsHttpBindingConfiguration" transactionFlow="true" />
      </wsHttpBinding>
      .......