如何在不使用默认代理的情况下在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