为什么我从Web应用程序而不是控制台应用程序中获取无法连接到远程服务器异常?

时间:2011-11-22 09:41:15

标签: c# web-services

我在启用了匿名访问的测试服务器上运行了asmx Web服务。

当我将Web引用添加到控制台应用程序并调用一个简单的Hello World方法时:

PivotService.PivotService p = new PivotService.PivotService();
String s = p.SayHello();

当我在Web应用程序的页面加载中执行完全相同的操作时,我得到System.Net.WebException: {"Unable to connect to the remote server"}

内部异常是{"No connection could be made because the target machine actively refused it 127.0.0.1:8888"},errorCode 10061。

为什么这可以从控制台应用程序而不是Web应用程序中运行?

5 个答案:

答案 0 :(得分:28)

这可能是由于应用程序之间代理设置的差异造成的。查看配置文件中Default Proxy元素周围的MSDN文档。

答案 1 :(得分:16)

在使用HttpClient命名空间中的System.Net.Http类时,我也处于类似情况。我试图通过公司代理服务器进行网络呼叫。

虽然当从Visual Studio中的控制台应用程序调用时,此HttpClient调用能够成功解析dns的IP,但是当从Web API调用时,dns解析失败。事实证明,我必须在web api应用程序的web.config中输入此条目。

<system.net>
    <defaultProxy />
</system.net>

相信Mark 909的回答是指向我正确的方向。有关其他信息,请参阅Default Proxy

答案 2 :(得分:1)

首先从控制台中删除Web引用 运行Web服务并复制URL 转到您的解决方案资源管理器并添加Web引用(排除旧的)&gt;高级&gt;添加Web引用 添加粘贴URL然后添加您的Web引用名称,然后重建您的解决方案 它适用于我

答案 3 :(得分:0)

正如@R Kiran Kumar建议的那样,我还必须添加代理值:

<system.net>
    <defaultProxy>
      <proxy usesystemdefault="False"
             proxyaddress="Specify Your Proxy Address: Specify Port Number"
             // Example, "http://192.168.0.10:1234"
bypassonlocal="False"/>
    </defaultProxy>
  </system.net>

答案 4 :(得分:0)

使用此行:

ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

就在httpclient对象创建之上