繁体   English   中英

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

[英]Why do I get an Unable to connect to the remote server exception from a web app and not console app?

我在启用了匿名访问的测试服务器上运行了一个 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"} active denied {"No connection could be made because the target machine actively refused it 127.0.0.1:8888"} 10061。

为什么这可以从控制台应用程序而不是网络应用程序工作?

这可能是由于应用程序之间的代理设置不同。 查看有关配置文件中默认代理元素的 MSDN 文档。

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

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

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

归功于 Mark 909 为我指明了正确方向的回答。 有关其他信息,请参阅默认代理

首先从控制台删除 web 引用运行你的 web 服务并复制 URL 到你的解决方案资源管理器并添加 web 引用(排除旧的)>高级>添加 web 引用添加粘贴 URL 然后添加你的 web 引用名称然后重建你的解决方案它工作正常为我

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

使用这一行:

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

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

就在httpclient对象创建之上

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM