2011-05-11 48 views
3

我正在嘗試託管支持wshttpbindingbasichttpbinding的WCF服務。 原因是我需要雙工和Windows移動客戶端的桌面客戶端我不這樣做。用於雙工和非雙工端點的WCF OperationContract

假設我有3個OperationContracts,其中2個需要雙工,其中1個不需要。

那麼是否有可能公開2 OperationContract wsHttpBinding和最後一個與 只是basicHttpBinding

因爲當我嘗試我得到這個錯誤:

合同需要會議,但綁定「basicHttpBinding的」不 支持,或沒有配置正確 支持它。

有沒有辦法讓這項工作?或者我必須爲每個綁定分別創建WCF服務?

感謝您的建議和幫助。

回答

2

每個端點始終公開其所代表的該服務的所有操作的

對於Service1的一種方法和其他兩種方法的雙工端點,您不能公開您的「基本」端點。

如果您需要具備這種靈活性,您需要創建兩個單獨的服務實現 - 一個處理雙工操作,一個處理其他操作。

+0

沒關係,所以沒有其他辦法,感謝您的快速回復。 – Tan 2011-05-11 11:43:38

+0

如果我更改[ServiceContract(SessionMode = SessionMode.Allowed,CallbackContract = typeof(IProductionCallback))],會發生什麼情況。 ?而不是SessionMode = SessionMode.Required – Tan 2011-05-11 12:05:15

+0

@Tan [Microsoft指出](https://msdn.microsoft.com/en-us/library/ms731064(v = vs.110).aspx)「類似事件的行爲雙工服務只能在會話中使用「,所以推測SessionMode.Allowed不是有效的配置,並且不起作用。 – 2015-07-03 12:59:26

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,會話也不會創建。

+0

這將無法正常工作,因爲Windows Mobile不支持雙面打印。在我的合同中,我有雙工和非雙工操作。而我只想在使用basichttpbinding時只公開沒有雙工的操作。 – Tan 2011-05-11 11:58:31

+0

這將暴露兩個端點上的所有三個操作** - 這將工作,但它不是譚尋找.... – 2011-05-11 15:11:49

+0

我不確定basicHttp中的單工通信。 請檢查此鏈接是否適用於您的案件。 http://www.codeproject.com/KB/WCF/double_simplex_wcf.aspx – Raghav 2011-05-11 15:23:51