![](/img/trans.png)
[英]Azure web app - “HttpClient Unable to connect to the remote server”
[英]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.