我在启用了匿名访问的测试服务器上运行了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应用程序中运行?
答案 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
对象创建之上