Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过配置的本地代理服务器调用WCF服务?_C#_.net_Wcf_Proxy_Service - Fatal编程技术网

C# 如何通过配置的本地代理服务器调用WCF服务?

C# 如何通过配置的本地代理服务器调用WCF服务?,c#,.net,wcf,proxy,service,C#,.net,Wcf,Proxy,Service,我已经编写了一个类,负责调用第三方WCF服务,它运行良好。我们的应用程序可以配置本地网络的代理设置,所以剩下的就是在进行呼叫时使用这些设置(如果已经设置) 我环顾四周,看不到任何东西清楚地说明如何做到这一点。我发现我正在使用的BasicHttpBinding对象有一个ProxyAddress属性,但没有任何属性允许我定义网络凭据或用户名和密码 它可能就在我面前,所以我想我需要指向正确的方向。至少我希望事情就这么简单!我需要做的就是告诉我的服务调用本地代理服务器是什么以及使用什么凭据 这是我用来实

我已经编写了一个类,负责调用第三方WCF服务,它运行良好。我们的应用程序可以配置本地网络的代理设置,所以剩下的就是在进行呼叫时使用这些设置(如果已经设置)

我环顾四周,看不到任何东西清楚地说明如何做到这一点。我发现我正在使用的BasicHttpBinding对象有一个ProxyAddress属性,但没有任何属性允许我定义网络凭据或用户名和密码

它可能就在我面前,所以我想我需要指向正确的方向。至少我希望事情就这么简单!我需要做的就是告诉我的服务调用本地代理服务器是什么以及使用什么凭据

这是我用来实例化服务类的代码。我省略了构建请求类、调用服务方法和处理结果的下一部分

// Create the service instance.
var binding = new BasicHttpBinding();
var endPoint = new EndpointAddress(new Uri(_servicesBaseUri + "MyServiceName"));
var service = new WSHsgCreateSchemeRepairClient(binding, endPoint);

// Add the MessageInspector to the contract behaviours list. This will inject the SecurityHeader XML and the SOAP action.
var soapAction = _servicesBaseUri + "MyServiceName/MyServiceMethod";
service.Endpoint.Contract.Behaviors.Add(new MessageInspector(_securityHeaderUsername, _securityHeaderPassword, soapAction));
我们还有其他一些web服务调用(使用旧的web服务方法),它们生成System.Net.WebProxy的新实例,并将其设置为服务类Proxy属性,但显然在WCF中有所不同


谢谢。

我想我已经解决了。可以设置并使用默认的系统代理。如果其他人也有同样的要求


其思想是您必须首先设置
System.Net.HttpWebRequest.DefaultWebProxy.Credentials
(可能是
System.Net.CredentialCache.DefaultCredentials
)-这就是“默认代理”的位置当您将绑定的
UseDefaultWebProxy
设置为
true

时,参数取自。您可以通过特定于您的服务的web.config设置来执行此操作。 在绑定配置中,设置proxyAddress=”http://myproxy:8080“并设置useDefaultWebProxy=“false”


要为所有服务设置代理,请执行以下操作:

<system.net>
  <defaultProxy>
    <proxy usesystemdefault="True" proxyaddress="http://myproxy:8080" bypassonlocal="True" />
  </defaultProxy>
</system.net>

<system.net>
  <defaultProxy>
    <proxy usesystemdefault="True" proxyaddress="http://myproxy:8080" bypassonlocal="True" />
  </defaultProxy>
</system.net>