2015-05-13 67 views
0

有沒有辦法從服務類本身的對象實例獲取WCF服務正在使用的綁定?如何獲取特定WCF服務正在使用的綁定

我目前正在調試一個WCF服務,並且已經改變了客戶端綁定,並且想知道他們是否被應用於代表服務接口的代理類。

另外,代理類正在使用ChannelFactory<IMyWCFService>.CreateChannel()方法創建。但是,由於這是一個MVC Web應用程序,並且方法調用是通過依賴注入完成的。所以代理對象被注入到我的代碼中。

所以,只需要清楚我代碼中使用代理對象的位置,我無法訪問原始的ChannelFactory。我知道ChannelFactory在配置Global.asax.cs類中的依賴注入容器時設置的綁定。然而,因爲我們使用依賴注入,所以不能保證在Global.asax.cs中定義的ChannelFactory或實際綁定是用於創建代理對象的綁定,因爲它可能已被其他代碼更改過。我遇到的問題是,我們正在顯式地更改Global.asax.cs類中使用的綁定的值,但是這些設置沒有影響到使用其他綁定的情況。

+0

在客戶端配置通常遊戲指定綁定(web.config中的MVC的情況下) – Uriil

+0

@Uriil啊,我知道,我只是想知道,如果服務代理對象有一些對綁定的引用。以便您檢查正在使用哪個綁定。 –

回答

2

您可以從服務的端點對象獲取綁定:

var service = new Service1Client(); 
Binding binding = service.Endpoint.Binding; 
Console.WriteLine(binding); 
+0

這會起作用,但需要在'ChannelFactory '上調用'Endpoint.Binding',因爲這是OP用來創建代理的。因此,例如,'ChannelFactory factory = new ChannelFactory ()',然後是'string binding = factory.Endpoint.Binding.Name',它將使用綁定。 – Tim

+0

感謝大家的信息是有用的,但不幫助我在這種情況下,因爲我無法確定如何創建代理對象 - 因爲它通過依賴注入爲我做,因此無法訪問綁定在建議的方式。 –