2016-11-09 284 views
0

我正面临着这个奇怪的问题。我被要求做一个poc。所以我做了一个快速和肮脏的应用程序(控制台应用程序)。我要打一个网址并解析某些响应的一部分。让我们假设这个网址是www.google.co.uk。我在控制台程序上的代码运行良好。之后,我将它移植到我的web应用程序(它运行在asp.net 4.5,web api控制器方法上)。现在,只要尝试点击网址,就会立即发出提供错误的相同代码。其代码如下无法连接到远程服务器:由于目标计算机主动拒绝,无法建立连接

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

错误是:无法连接到远程服务器:无连接可以作出,因为目标机器积极地拒绝我

它未能对的GetResponse() Web Api控制器上的方法。现在我知道它与代理有关,因为当我试图打到一个内部托管的URL(在我们的公司网络内)时,代码运行良好。我的问题是为什么在桌面应用程序中,我没有提供任何代理信息,但在网络中我需要?桌面应用程序如何读取代理信息?还我elavated应用程序池标识使用我的帐户在Web应用程序,它仍然没有工作(如果你给我的建议有关更改用户其下的应用程序池正在运行)

回答

1

应用程序读取默认的代理设置哪些绑定到用户的配置文件。 (通过IE以交互方式设置它的最简单的方法。).NET应用程序支持该设置,并且许多其他应用程序都支持像Fiddler,Chrome,FF等一样的设置。实际上,可以考虑不遵守该设置的应用程序不相容。 (例如Java应用程序)

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

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

相关问题