我正面临着这个奇怪的问题。我被要求做一个poc。所以我做了一个快速而肮脏的应用程序(控制台应用程序)。我要打一个URL并解析响应的某些部分。假设该网址为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();
错误是:无法连接到远程服务器:无连接可以作出,因为目标机器积极地拒绝我牛逼
Web Api控制器上的GetResponse()方法失败。现在我知道它与代理有关,因为当我尝试访问内部托管(在公司网络内部)的url时,代码运行良好。我的问题是,为什么在桌面应用程序中我不必提供任何代理信息,但在Web中我需要提供这些信息?桌面应用程序如何读取代理信息?我也取消了应用程序池标识以在Web应用程序中使用我的帐户,但仍然无法正常工作(如果您向我建议更改运行该应用程序池的用户)
应用程序读取绑定到用户个人资料的默认代理设置。(通过IE进行交互设置的最简单方法。)。NET应用程序尊重该设置,而许多其他应用程序则尊重相同的设置,例如Fiddler,Chrome,FF等。实际上,不遵守该设置的应用程序可以视为不相容。(例如,Java应用程序)
捕获的内容是“绑定到用户的个人资料”。因此,不需要在特殊用户帐户下运行的服务的设置与您的交互式用户的设置相同。(或完全没有设置)
最安全的解决方案是通过.NET http类的代码设置代理。当然,您可以从配置文件中读取它,而无需进行硬编码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句