【问题标题】:Why do I get an Unable to connect to the remote server exception from a web app and not console app?为什么我会从 Web 应用程序而不是控制台应用程序获得无法连接到远程服务器异常?
【发布时间】:2012-01-03 17:06:48
【问题描述】:

我在启用了匿名访问的测试服务器上运行了一个 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 应用中工作?

【问题讨论】:

  • 我在连接到 VPN 时收到此消息

标签: c# web-services


【解决方案1】:

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

【讨论】:

  • app.config 或 web.config 中都没有 defaultProxy 元素。将其添加到 web.config 并设置 enabled=false。修复了问题:) 谢谢
  • 谢谢!!我为此发疯,但这都是我自己做的。我创建了一个代理条目来过滤通过提琴手的流量。离开代码一段时间后,我返回它并遇到此错误,Fiddler 未打开,因此代理失败。再次感谢!
  • 奇怪。我必须用 default="true" 添加它。幸运的是几个小时后它起作用了:)
【解决方案2】:

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

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

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

感谢 Mark 909 的回答为我指明了正确的方向。请参阅Default Proxy 了解更多信息。

【讨论】:

  • 这解决了我的问题。在我将方法更改为异步后,它开始发生。
  • 这个也对我有用!使用邮递员,我的 POST 请求通过了,但是在 Visual Studio 的 api 应用程序中,我遇到了连接错误。
【解决方案3】:

首先从控制台中删除 Web 引用 运行您的网络服务并复制 URL 转到您的解决方案资源管理器并添加网络参考(不包括旧的)>高级>添加网络参考 添加粘贴 URL,然后添加您的 Web 参考名称,然后重建您的解决方案 对我来说很好用

【讨论】:

    【解决方案4】:

    正如@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>
    

    【讨论】:

      【解决方案5】:

      使用这一行:

      ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
      
      System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
      

      就在httpclient对象创建之上

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-13
        • 1970-01-01
        相关资源
        最近更新 更多