我創建了一個使用MSMQ的WCF服務。
多個.NET客戶端應該能夠使用此服務並向其發送消息。
部分客戶端是在沒有WCF(例如.NET 1.1)的.NET版本中編寫的。
對於這些客戶端,我直接使用Msmq API。
問題是,消息的編碼不符合服務端的預期編碼。
所以,我試圖使用customBinding
以改變在服務端的消息編碼:使用舊客戶端消耗WCF服務(使用MSMQ)
<bindings>
<customBinding>
<binding name="MyCustomBinding">
<!-- available encodings: -->
<!-- <textMessageEncoding /> -->
<!-- <binaryMessageEncoding /> -->
<!-- <mtomMessageEncoding /> -->
<!-- <webMessageEncoding /> -->
<msmqTransport ...>
<msmqTransportSecurity ... />
</msmqTransport>
</binding>
</customBinding>
</bindings>
我想我限制在四個預定義的編碼之一:textMessageEncoding
,binaryMessageEncoding
,mtomMessageEncoding
,webMessageEncoding
。
在客戶端我試圖改變格式:
System.Messaging.Message msmqMessage = new System.Messaging.Message();
msmqMessage.Formatter = new System.Messaging.ActiveXMessageFormatter();
//msmqMessage.Formatter = new System.Messaging.BinaryMessageFormatter();
//msmqMessage.Formatter = new System.Messaging.XMLMessageFormatter();
似乎沒有格式化適合於預期的編碼。 是否有統一編碼的另一種方法? 也許是一個自定義的編碼器或類似的東西? 還是我完全錯了調整格式化器和編碼器?
在此先感謝。
Thx。所以我必須聽第二個隊列並執行第二個合約,它需要一個'MsmqMessage'? –
是的,在你的情況下,你將不得不針對不同版本的客戶端公開第二個端點,但我相當肯定你可以讓你的wcf客戶端使用傳統端點,只要它們匹配綁定即可。 –
你知道我爲什麼在使用'msmqIntegrationBinding'時得到如此小的元數據嗎?我知道我不需要使用可用方法的服務代理,但數據合同很容易獲得。有任何想法嗎? –