从代理服务器后面调用Web服务

Hem*_*ant 9 .net c# soap web-services

我需要在应用程序(C#)中添加一个功能,它将使用Web服务(XML SOAP服务).

现在,这个应用程序可以(并且主要)在具有代理服务器的企业环境中使用.

我理解SOAP服务使用HTTP协议,因此应该使用端口80,它通常保持打开状态.应用程序是否可以在没有任何特殊编码的情况下使用Web服务,或者我需要编写特殊代码来检测代理设置或您看到的其他一些问题?

编辑:Webservice是互联网上的公共服务.它不在同一个网络上.

Aar*_*onS 10

默认情况下它将使用端口80,您不必进行任何进一步的编码.

如果您确实需要通过某种代理,那么您需要做的就是将以下内容添加到您的web.config中:

  <system.net>
    <defaultProxy>
      <proxy  proxyaddress="http://yourproxyserver:80" />
    </defaultProxy>
  </system.net>
Run Code Online (Sandbox Code Playgroud)

您也可以使用以下代码执行此操作:

WebRequest.DefaultWebProxy = new WebProxy("http://yourproxyserver:80/",true);
Run Code Online (Sandbox Code Playgroud)


小智 8

您可以使用本地计算机的默认设置:

System.Net.ServicePointManager.Expect100Continue = false; 
wsclient.Proxy=  System.Net.HttpWebRequest.GetSystemWebProxy();
wsclient.Proxy.Credentials = CredentialCache.DefaultCredentials;     
Run Code Online (Sandbox Code Playgroud)

并在app.config中添加此配置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.net>
    <settings>
      <servicePointManager expect100Continue="false" />
    </settings>
  </system.net>
</configuration>
Run Code Online (Sandbox Code Playgroud)


Hem*_*ant 7

好.所以我做了一些实验,事实证明我们确实需要编写一些代码才能使它从代理服务器后面运行.(虽然我会更喜欢更好的解决方案)

因此,它实际上向下询问用户的代理服务器详细信息,然后为代理服务器配置服务代理类,如下所示:

var networkCredentials = new NetworkCredential ("username", "password", "domain");
WebProxy myProxy = new WebProxy ("W.X.Y.Z:NN", true) {Credentials = networkCredentials};
var service = new iptocountry { Proxy = myProxy };
string result = service.FindCountryAsString ("A.B.C.D");

我写了一个测试类,它使用IP To Country免费网络服务.

使用上面的代码,我可以成功使用Web服务.


Mar*_*ell 5

内置代码(WebClient,WCF,HttpWebRequest等)都使用WinHTTP配置来获取代理配置.所以你需要做的就是配置WinHTTP以了解代理!

在XP中,这是:

proxycfg -u
Run Code Online (Sandbox Code Playgroud)

从用户的IE代理设置(WinInet)导入设置.

在Vista/etc上,你使用

netsh winhttp
Run Code Online (Sandbox Code Playgroud)

(以及一些子命令,如"import")

未经测试,但尝试:

netsh winhttp import proxy source=ie
Run Code Online (Sandbox Code Playgroud)

在那之后,您的.NET代码应该都通过可能已经配置使用的代理来使用IE等.