无法连接到远程服务器:无法建立连接,因为目标计算机主动拒绝它

时间:2016-11-09 15:37:04

标签: c# asp.net-web-api httpwebrequest

我正面临这个奇怪的问题。我被要求做一个poc。所以我做了一个快速而肮脏的应用程序(Console App)。我打了一个网址并解析了某些部分的回复。让我们假设该网址是www.google.co.uk。我的控制台应用程序代码运行良好。之后我将它移植到我的web应用程序(在asp.net 4.5上运行,web api控制器方法)。一旦尝试点击url,相同的代码现在开始给出错误。代码如下

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(contentDeliveryURL));
request.CookieContainer = cookieContainer;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

错误是:无法连接到远程服务器:无法建立连接,因为目标计算机主动拒绝了 t

Web Api控制器上的 GetResponse()方法失败。现在我知道它与代理有关,因为当我试图点击内部托管的网址(在我们的公司网络内)时,代码运行正常。我的问题是为什么在桌面应用程序中我不提供任何代理信息,但在网络中我需要?桌面应用程序如何读取代理信息?此外,我已经在网络应用程序中使用了我的帐户,并且它仍然无效(如果您向我提供有关更改运行应用程序池的用户的建议)

1 个答案:

答案 0 :(得分:1)

应用程序读取绑定到用户配置文件的默认代理设置。 (通过IE以交互方式设置它的最简单方法。)一个.NET应用程序尊重该设置,许多其他应用程序尊重与Fiddler,Chrome,FF等相同的设置。实际上,不尊重该设置的应用程序可以被认为是不相容。 (例如Java应用程序)

捕获是“绑定到用户的配置文件”。因此,在特殊用户帐户下运行的服务不需要与交互式用户具有相同的设置。 (或根本没有设置)

最安全的解决方案是通过.NET http类的代码设置代理。当然,您可以从配置文件中读取它而不是硬编码。