如何在不使用默認代理的情況下在WCF客戶端上以編程方式設置HTTP代理?如何在WCF客戶端服務代理上設置HTTP代理(WebProxy)?
代理,代理,代理。
根據開發的WCF模型,我通過在服務的WSDL上運行svcutil.exe來生成客戶端「代理」 類。 (這也是 生成一個客戶端配置文件)。
在我的代碼中,我新建了一個該類的實例,我可以連接到 服務。非常好。
var svcProxy = new MyWebService();
svcProxy.GetInformation(request);
我們稱之爲代理類,但有另一個代理 - http代理。這 服務正在使用wsHttpBinding basicHttpBinding,因此它正在通過http。現在,假設我想通過 一個http代理(由.NET BCL中的System.Net.WebProxy建模)將客戶端連接到Web服務。我知道 來自於我閱讀.NET和WCF文檔的豐富經驗,如果沒有指示WCF運行時,WCF運行時將在通過http/https進行通信時使用默認的 系統代理。
我可以設置在命令行中 的WinXP/2003 with ProxyCfg.exe as described here,並在以後 版本的Windows with netsh.exe as described here的。
我還可以通過設置System.Net.WebRequest.DefaultWebProxy property來指定應用程序 內使用的默認Web代理。
但是,假設我想通過與系統範圍代理 不同的代理進行連接?例如,可能沒有系統範圍的代理服務器,但我需要特別爲Web服務使用一個代理服務器。或者也許有 一個系統級的代理,但我需要使用一個不同的,爲網絡 服務。事實上,也許有多個Web服務客戶端,並且每個人都應該獲得不同的代理服務器。
如何設置每個綁定的代理?
在ASMX模型,我可以這樣做:
var svcProxy = new MyWebService();
svcProxy.Proxy = new System.Net.WebProxy("http://proxyserver:1234", true);
svcProxy.GetInformation(request);
但是,這是不可能的WCF; WCF生成的客戶端代理 類不公開Proxy屬性。如何設置http代理,每個客戶端代理以及如何在http代理上設置身份驗證?
相關:
- how-to-set-proxy-with-credentials-to-generated-wcf-client
+1用於鑄造BasicHttpBinding – Lijo 2012-11-28 09:46:19