我尝试使用WebRequest类连接到托管在不同服务器上的Web服务。 Web服务返回一个字符串作为响应。这样做我得到一个错误:
“System.Net.Sockets.SocketException:无法建立连接 因为目标机器主动拒绝了它“
System.Net.WebException:无法连接到远程服务器---> System.Net.Sockets.SocketException:无法建立连接 因为目标机器主动拒绝它127.0.0.1:14012 at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress(socketAddress)at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, 插座s4,插座s6,插座& socket,IPAddress&地址, ConnectSocketState状态,IAsyncResult asyncResult,Exception& 例外)---内部异常堆栈跟踪结束--- at System.Net.HttpWebRequest.GetRequestStream(TransportContext& context) 在System.Net.HttpWebRequest.GetRequestStream()处 Limoallover.InsertSoapEnvelopeIntoWebRequestUS(XmlDocument的 soapEnvelopeXml,HttpWebRequest webRequest)at Limoallover.dawUpdateDriverStatus(String apiId,String apiKey,String idTrip,String tripCode,String statusCode)at Limoallover.UpdateJobStatus(String Lat,String Lng,Int32 DriverID, Int32 nJobStatus,Int32 nJobId,String CompanyID,String idTrip, String tripCode,String statusCode)
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);
}
}
答案 0 :(得分:29)
六天后,我找到了让我疯狂的答案!答案是在web.config文件中禁用代理:
<system.net>
<defaultProxy>
<proxy usesystemdefault="False"/>
</defaultProxy>
</system.net>
答案 1 :(得分:6)
异常消息表明您正在尝试连接到同一主机(127.0.0.1),而您却声明您的服务器正在另一台主机上运行。除了明显的错误,比如拥有&#34; localhost&#34;在网址中,或者您可能想要查看DNS设置。
答案 2 :(得分:1)
有阻止连接的防火墙或托管该服务的进程未在该端口上侦听。或者它正在侦听另一个端口。
答案 3 :(得分:1)
我之前运行正常的网站遇到了同样的问题。我通过删除C:\WINDOWS\Microsoft.NET\Framework\v#.#.#####\Temporary ASP.NET Files\@proyectName\###CC##C\###C#CC
答案 4 :(得分:1)
我遇到了类似的问题,尝试在我的VisualStudio 2013下运行基于WCF的HttpSelfHostServer。我尝试了所有可能的方向(关闭防火墙,完全禁用IIS以消除localhost端口占用的可能性其他一些服务等。)。
最终,“诀窍”(解决了问题)是以管理员重新运行VisualStudio 2013。
惊人的。
答案 5 :(得分:1)
当我开始提琴手时,这个问题就消失了。 在遇到问题之前在我的机器上使用它。 可能是Fiddler代理的东西。
答案 6 :(得分:0)
出现同样的问题,原来是WindowsFirewall阻塞连接。尝试禁用WindowsFirewall一段时间以查看是否有帮助,如果问题是根据需要打开端口。
答案 7 :(得分:0)
按运行&gt;删除临时文件%TEMP%
以管理员身份打开VS2015,
它对我有用。
答案 8 :(得分:0)
如果您有配置文件转换,请确保在发布配置文件中选择了正确的配置。 (发布&gt;设置&gt;配置)
答案 9 :(得分:0)
如果你在Fiddler正在运行时有这个 - &gt;在Fiddler中,转到“规则”并禁用“自动验证”,它应该再次起作用。
答案 10 :(得分:0)
为创建Web请求的代理设置添加新的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()的地方处理代理设置并帮助代码正常工作。