【问题标题】:Unable to connect to the remote server: No connection could be made because the target machine actively refused it无法连接到远程服务器:由于目标机器主动拒绝,无法建立连接
【发布时间】:2016-11-09 15:37:03
【问题描述】:

我正面临这个奇怪的问题。我被要求做一个 poc。所以我做了一个快速而肮脏的应用程序(控制台应用程序)。我要点击一个 url 并解析响应的某些部分。让我们假设 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();

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

它在 Web Api 控制器上的 GetResponse() 方法上失败。现在我知道它与代理有关,因为当我尝试访问内部托管的 url(在我们的公司网络中)时,代码运行良好。我的问题是为什么在桌面应用程序中我不必提供任何代理信息但在网络中我需要提供?桌面应用程序如何读取代理信息?我还提升了应用程序池身份以在 Web 应用程序中使用我的帐户,但它仍然无法正常工作(如果您给我有关更改运行应用程序池的用户的建议)

【问题讨论】:

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


    【解决方案1】:

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

    关键是“绑定到用户的个人资料”。因此,在不需要的特殊用户帐户下运行的服务与您的交互式用户具有相同的设置。 (或根本没有设置)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-18
      相关资源
      最近更新 更多