[英]How to add WCF Service Reference when using net.msmq
如何在使用該服務時啟動WCF客戶端僅在net.msmq上可用
- 當您使用“添加服務參考”時,您會收到錯誤...
例如,我已經從MSDN啟動並運行了BizTalk示例WcfNetAdapterPublishing,它包含一個使用該服務的控制台測試客戶端...
net.msmq://localhost/private/WcfNetMsmqAdapterPublishing
所以它似乎有可能,但我無論如何都看不到開始?
您可以在單獨的端點上通過basicHttpBinding
公開相同的服務和數據協定,使用該端點創建服務引用(以及Metadata Exchange),然后手動調整app.config以使用netMsmqBinding
。
或者您可以與服務和客戶端項目之間的服務和數據協定共享合同程序集,並手動創建配置(真的不是什么大問題),並使用ChannelFactory<T>
在代碼中創建客戶端代理。 由於您已經在使用netMsmqBinding
,因此您肯定在線路的兩端使用.NET - 因此該技術應該可以正常工作。
您需要添加一個基地址(除了net.msmq之外),前綴為http
。 因此,在您給出的示例中使用net.msmq,您將添加以下內容:
http://localhost/private/WcfNetMsmqAdapterPublishing ...
然后,您需要為mex
添加端點,如下所示:
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
然后啟動您的服務(在Visual Studio之外)...然后添加對您添加的http://
端點的引用...
這是我的一個例子:
<service name="Services.Archiver" behaviorConfiguration="FacebookArchiver">
<endpoint address=""
binding="netMsmqBinding"
bindingConfiguration="msmq"
contract="Services.IArchiver"
behaviorConfiguration="validator" />
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="net.msmq://localhost/private/Archiver" />
<add baseAddress="http://localhost/private/Archiver" />
</baseAddresses>
</host>
</service>
在這個例子中,您只需將服務引用添加到http:// localhost / private / Archiver ... done。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.