WCF OperationContract用于双工和非双工端点

时间:2011-05-11 11:33:29

标签: wcf c#-3.0

我正在尝试托管支持wshttpbindingbasichttpbinding的WCF服务。 原因是桌面客户端我需要双工,而Windows移动客户端则不需要。

假设我有3个OperationContracts,其中2个需要双工,其中1个不需要。

因此可以使用wsHttpBinding公开2个OperationContract,最后一个公开 只是basicHttpBinding

因为当我尝试时我收到此错误:

  

合同需要Session,但Binding'BasicHttpBinding'不需要   支持它或未配置   适当地支持它。

有没有办法让这项工作?或者我是否必须为每个绑定提供单独的WCF服务?

感谢您的建议和帮助。

2 个答案:

答案 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访问,则不会创建会话。