Visual studio 无法建立连接,因为目标计算机主动拒绝

Visual studio 无法建立连接,因为目标计算机主动拒绝,visual-studio,http,networking,tcp,routing,Visual Studio,Http,Networking,Tcp,Routing,等一下。在您将此标记为重复之前。我有一个稍微不同的问题。 所以我调用了一个抛出这个异常的api。但是-关键是,只有在从服务器发出调用时才会发生这种情况。如果我做一个angular/ajax调用,这会非常好。 在.net中,当我写以下内容时 using (HttpClient hc = new HttpClient()) { hc.BaseAddress = new Uri(endpoint); hc.DefaultRequestHeaders.Accept.Add(new Me

等一下。在您将此标记为重复之前。我有一个稍微不同的问题。 所以我调用了一个抛出这个异常的api。但是-关键是,只有在从服务器发出调用时才会发生这种情况。如果我做一个angular/ajax调用,这会非常好。 在.net中,当我写以下内容时

using (HttpClient hc = new HttpClient())
{
    hc.BaseAddress = new Uri(endpoint); 
    hc.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    HttpResponseMessage response =  hc.GetAsync(url).Result;
}
我得到一个内部异常,它说无法建立连接,因为目标机器主动拒绝了它xx.xxx.xx.xx:pp

我检查了所有的链接和链接。他们都在谈论防火墙/网络问题。我觉得这不是防火墙或网络,因为它是通过ajax工作的。 我想更多的是服务器配置。任何指示都会有帮助


此外,当我从浏览器或通过fiddler拨打电话时,此功能也能正常工作

如果您在同一台机器上执行相同的API调用,并且一个方法在工作,而另一个方法不工作,那么很可能您没有发送服务器想要的内容

当使用AJAX调用时,浏览器会附加许多辅助信息,如果希望API响应,则需要复制这些信息。例如,cookies和用户代理字符串。服务器检测到您不是浏览器,并拒绝您的请求。这有很多正当的理由,比如试图阻止自动机器人攻击它们的API

您可以使用开发人员工具查看浏览器发送的内容。例如,在Chrome中,您可以如下方式查看网络请求头:


或者,它仍然可能是您的防火墙,限制您的应用程序并允许您的浏览器通过。尝试为应用程序显式添加规则

所以我终于明白了原因是什么——但我不知道为什么会这样

原因是-Visual studio不尊重我们的代理设置。 本质上,我们这里讲的是3台服务器

所以我的机器ip:xxx.xx.xx.1
我公司代理服务器ip:xx.xx.xx.2
api ip:xxx.xx.xx.3URL(api.com)

每个呼叫都通过我在internet设置中看到的代理路由。因此,当我安装wireshark并在从visual studio访问时看到路由-->时,它会直接尝试从主机访问api服务器,而无需通过代理

即:xxx.xx.xx.1-->xxx.xx.xx.3[失败]

当我在浏览器中尝试时,它会尊重代理设置

即:xxx.xx.xx.1-->xxx.xx.xx.2

[成功]xxx.xx.xx.2-->xxx.xx.xx.3[成功]

当我将主机条目添加到

xxx.xx.xx.2-api.com

事情开始起作用了——因为对api的所有调用现在都通过代理服务器路由。 我不知道为什么会发生这种情况,也不知道如何避免这种情况。至少解决了我的问题


我检查了设置-我的web.config/machine.config中没有任何内容。

因此您正在从同一台机器调用同一个API端点,使用AJAX它可以工作,使用C#它不能。是否正确?另外,您是否有权访问服务器配置或这是一个外部API?@MrZander-正确。相同的Api-相同的调用。。相同的url。它是一个由不同团队拥有的外部api。我可以让他们检查一些特别的东西。但我没有直接访问防火墙配置?防火墙端口可以配置为允许某些应用程序进入或使它们处于外部状态,这是正确的-我的api可以执行而不需要任何东西。找到那个电话的提琴手。你们可以在标题中看到这一点——我实际上什么都并没有,但这是有效的@kveey然后我假设这一定是某种本地配置问题。你试过防火墙排除吗?