【问题标题】:No connection could be made because the target machine actively refused it 127.0.0.1无法建立连接,因为目标机器主动拒绝它 127.0.0.1
【发布时间】:2015-04-05 10:31:51
【问题描述】:

我尝试使用 WebRequest 类连接到托管在不同服务器上的 Web 服务。 Web 服务返回一个字符串作为响应。这样做时我得到一个错误:

"System.Net.Sockets.SocketException: 无法建立连接 因为目标机器主动拒绝了”

System.Net.WebException: 无法连接到远程服务器 ---> System.Net.Sockets.SocketException:无法建立连接 因为目标机器在 127.0.0.1:14012 处主动拒绝了它 System.Net.Sockets.Socket.DoConnect(端点 endPointSnapshot, SocketAddress socketAddress) 在 System.Net.ServicePoint.ConnectSocketInternal(布尔连接失败, Socket s4, Socket s6, Socket&socket, IPAddress&地址, ConnectSocketState 状态、IAsyncResult asyncResult、Exception& 异常)---内部异常堆栈跟踪结束---在 System.Net.HttpWebRequest.GetRequestStream(TransportContext& 上下文) 在 System.Net.HttpWebRequest.GetRequestStream() 在 Limoallover.InsertSoapEnvelopeIntoWebRequestUS(XmlDocument soapEnvelopeXml, HttpWebRequest webRequest) 在 Limoallover.dawUpdateDriverStatus(字符串 apiId,字符串 apiKey,字符串 idTrip,字符串tripCode,字符串状态码)在 Limoallover.UpdateJobStatus(String Lat, String Lng, Int32 DriverID, Int32 nJobStatus,Int32 nJobId,字符串 CompanyID,字符串 idTrip, 字符串tripCode,字符串状态码)

private  HttpWebRequest CreateWebRequestUS(string url, string action)
{
    HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
    webRequest.Headers.Add("SOAPAction", action);
    webRequest.ContentType = "text/xml;charset=\"utf-8\"";
    webRequest.Accept = "text/xml";
    webRequest.Method = "POST";
    return webRequest;
}

private  XmlDocument CreateSoapEnvelopeUS(string apiId, string apiKey, string idTrip, string tripCode, string statusCode)
{
    XmlDocument soapEnvelop = new XmlDocument();

    string xml = "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">";

    xml = xml + @"<soap:Body>";
    xml = xml + "<UpdateTripStatus xmlns=\"https://book.mylimobiz.com/api\">";
    xml = xml + @"<apiId>" + apiId + "</apiId>";
    xml = xml + @"<apiKey>" + apiKey + "</apiKey>";
    xml = xml + @"<idTrip>" + idTrip + "</idTrip>";
    xml = xml + @"<tripCode>" + tripCode + "</tripCode>";
    xml = xml + @"<statusCode>" + statusCode + "</statusCode>";
    xml = xml + @"</UpdateTripStatus>";
    xml = xml + @"</soap:Body>";
    xml = xml + @"</soap:Envelope>";



    soapEnvelop.LoadXml(xml);
    return soapEnvelop;
}

private static void InsertSoapEnvelopeIntoWebRequestUS(XmlDocument soapEnvelopeXml, HttpWebRequest webRequest)
{
    using (Stream stream = webRequest.GetRequestStream())
    {
        soapEnvelopeXml.Save(stream);
    }
}

【问题讨论】:

  • 127.0.0.1 对我来说似乎不是不同的服务器?
  • 127.0.0.1 重定向回您自己的计算机。防火墙问题?
  • 127.0.0.1 是您的本地机器,也就是“localhost”。
  • 确保您指向正确的网络服务地址
  • 从命令窗口运行 netstat -ano 以查看是否有任何东西正在侦听该地址/端口。

标签: c# asp.net .net sockets


【解决方案1】:

六天后,我找到了让我抓狂的答案!答案是在 web.config 文件中禁用代理:

<system.net>
  <defaultProxy> 
    <proxy usesystemdefault="False"/> 
  </defaultProxy>
</system.net>

【讨论】:

  • 从您的回答中无法理解我们是否应该禁用或启用以解决它
  • 补充艾哈迈德的回答
  • 谢谢你,我的男人!!!!只是为了添加到@Abhijeet 评论,
  • 我们将该代码放在 web 配置中的位置
  • 非常感谢!我忘记了 4 个小时...但我不明白为什么我的互联网选项已更改...
【解决方案2】:

异常消息表明您正在尝试连接到同一主机 (127.0.0.1),而您却说明您的服务器在不同的主机上运行。除了一些明显的错误,比如在 url 中有“localhost”,或者你可能想要检查你的 DNS 设置。

【讨论】:

    【解决方案3】:

    防火墙阻止了连接或托管服务的进程未在该端口上侦听。或者它正在侦听不同的端口。

    【讨论】:

    • 当我关闭防火墙时出现同样的问题
    【解决方案4】:

    我遇到了类似的问题,尝试在 VisualStudio 2013 下的 Debug 中运行基于 WCF 的 HttpSelfHostServer。我尝试了所有可能的方向(关闭防火墙,完全禁用 IIS 以消除 localhost 端口被其他人占用的可能性服务等)。

    最终,“成功”(解决了问题)是以 Administrator 身份重新运行 VisualStudio 2013。

    太棒了。

    【讨论】:

      【解决方案5】:

      当我启动 Fiddler 时,这个问题就消失了。 在出现问题之前在我的机器上使用它。 可能是 Fiddler 作为代理。

      【讨论】:

        【解决方案6】:

        我在以前运行良好的网站上遇到了同样的问题。我通过删除C:\WINDOWS\Microsoft.NET\Framework\v#.#.#####\Temporary ASP.NET Files\@projectName\###CC##C\###C#CC中的临时文件解决了这个问题

        【讨论】:

          【解决方案7】:

          运行删除临时文件 > %temp%

          并以管理员身份运行打开 VS2015,

          它对我有用。

          【讨论】:

            【解决方案8】:

            如果您有配置文件转换,请确保您在发布配置文件中选择了正确的配置。 (发布 > 设置 > 配置)

            【讨论】:

              【解决方案9】:

              遇到同样的问题,原来是 Windows 防火墙阻止了连接。尝试禁用 WindowsFirewall 一段时间,看看是否有帮助,如果是问题,请根据需要打开端口。

              【讨论】:

              • 感谢您的回复,但同样的错误也出现了
              • 好的,请记住,主动拒绝意味着客户端已连接并由于某种原因被关闭,因此问题必须是服务器上的某些策略或类似的东西;不要对客户端配置生气,这可能没问题
              • 这让我发疯了,你可以给我看看你可以通过teamviewer连接到我的mac
              • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
              • @DavidGrinberg 这就是我的答案,我分享了它。
              【解决方案10】:

              如果您在 Fiddler 运行时遇到此问题 -> 在 Fiddler 中,请转到“规则”并禁用“自动验证”,它应该会再次运行。

              【讨论】:

                【解决方案11】:

                为代理设置添加 new WebProxy(),您将在其中创建网络请求。

                示例:-

                  string url =  "Your URL";
                  System.Net.WebRequest req = System.Net.WebRequest.Create(url);
                  req.Proxy = new WebProxy();
                  System.Net.WebResponse resp = req.GetResponse();
                

                req.Proxy = new WebProxy() 处理代理设置并帮助代码正常工作。

                【讨论】:

                  猜你喜欢
                  • 2012-03-30
                  • 2017-06-06
                  • 2012-02-04
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-12-14
                  • 2018-07-12
                  • 1970-01-01
                  相关资源
                  最近更新 更多