当我使用 SessionMode = SessionMode.Required
在 servicecontract 然后我得到这个错误
Contract requires Session, but Binding 'BasicHttpBinding' doesn't support it or isn't configured properly to support it.
有人告诉我一个解决方案吗?
最佳答案
此错误消息很少清楚。这里的答案是这样的,basichttpbinding 不支持 session 。所以如果你想使用它,你必须使用下面的属性。
[ServiceContract(SessionMode = SessionMode.Allowed)]
这意味着,如果您尝试配置多个绑定(bind),如 basichttp、wshttp、net.tcp,WCF 将自动为 basichttp 绑定(bind)以外的 session 启用 session 。因此,如果您使用 SessionMode.Required 而不是 Allowed,那么您将被迫不使用 basichttpbinding。
也就是说,解决这个问题通常需要这样的东西:
<system.serviceModel>
<protocolMapping>
<add scheme="http" binding="wsHttpBinding" bindingConfiguration="wsHttpBindingConfiguration" />
</protocolMapping>
<bindings>
<wsHttpBinding>
<binding name="wsHttpBindingConfiguration" transactionFlow="true" />
</wsHttpBinding>
.......
关于wcf - 契约(Contract)需要 Session,但 Binding 'BasicHttpBinding' 不支持它或未正确配置以支持它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4406972/