我正在尝试托管支持wshttpbinding
和basichttpbinding
的WCF服务。
原因是桌面客户端我需要双工,而Windows移动客户端则不需要。
假设我有3个OperationContracts,其中2个需要双工,其中1个不需要。
因此可以使用wsHttpBinding
公开2个OperationContract,最后一个公开
只是basicHttpBinding
?
因为当我尝试时我收到此错误:
合同需要Session,但Binding'BasicHttpBinding'不需要 支持它或未配置 适当地支持它。
有没有办法让这项工作?或者我是否必须为每个绑定提供单独的WCF服务?
感谢您的建议和帮助。
答案 0 :(得分:2)
每个端点始终公开其所代表的服务的所有操作。
您不能为Service1
的一种方法公开“基本”端点,也不能为另外两种方法公开双工端点。
如果您需要具备这种灵活性,则需要创建两个单独的服务实现 - 一个处理双工操作,一个处理其他操作。
答案 1 :(得分:0)
<endpoint
address="ws"
binding="wsHttpBinding"
contract="YourNamespace.IMyService" />
<endpoint
address="basic"
binding="basicHttpBinding"
contract="YourNamespace.IMyService" />
现在,您可以使用
从不同的客户端访问该服务http://localhost/ws
http://localhost/basic,
提供,基地址
<host>
<baseAddresses>
<add baseAddress="http://localhost/" />
</baseAddresses>
</host>
如果您使用基本URI访问,则不会创建会话。