";连接尝试失败是因为连接方在一段时间后没有正确响应“;使用WebClient
本文关键字:连接 WebClient 使用 响应 quot 失败 是因为 一段时间 | 更新日期: 2023-09-27 18:23:35
我使用的是在本地机器上运行的以下代码,但当我在服务器上尝试相同的代码时,它会向我抛出错误
连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立了连接失败,因为连接的主机无法响应
这是我的代码:
WebClient client = new WebClient();
// Add a user agent header in case the
// requested URI contains a query.
//client.Headers.Add ("ID", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
Stream data = client.OpenRead("http://" + Request.ServerVariables["HTTP_HOST"] + Request.ApplicationPath + "/PageDetails.aspx?ModuleID=" + ID);
StreamReader reader = new StreamReader(data);
string s = reader.ReadToEnd();
Console.WriteLine(s);
data.Close();
reader.Close();
我在上出错
Stream data = client.OpenRead("http://" + Request.ServerVariables["HTTP_HOST"] + Request.ApplicationPath + "/PageDetails.aspx?ModuleID=" + ID);
这是由于设置了防火墙吗?
我也遇到了类似的问题,不得不使用将URL从字符串转换为Uri对象
Uri myUri = new Uri(URLInStringFormat, UriKind.Absolute);
(URLStringFormat是您的URL)尝试使用Uri而不是字符串进行连接:
WebClient client = new WebClient();
client.OpenRead(myUri);
在web.config
中显式设置代理地址解决了我的问题
<system.net>
<defaultProxy>
<proxy usesystemdefault = "false" proxyaddress="http://address:port" bypassonlocal="false"/>
</defaultProxy>
</system.net>
在使用web服务时解决"TCP错误代码10060:连接尝试失败…"
我知道这个票证很旧,但我刚刚遇到了这个问题,我想我会发布发生在我身上的事情以及我是如何解决的:
在我打电话的服务中,有人打电话给另一个网络服务。像个傻瓜一样,我在发布web服务时忘记了确保DNS设置正确,因此我的web服务在发布时试图从api.myproductionserver.local而不是api.mypproductionserver.com调用。是后端web服务导致了超时。
无论如何,我想我会把这个传下去。
我知道这篇文章是5年前发布的,但我最近遇到了这个问题。这可能是由于公司网络限制造成的。所以我的解决方案是让WebClient
通过代理服务器进行调用。这是对我有用的代码。希望它能有所帮助。
using (WebClient client = new WebClient())
{
client.Encoding = Encoding.UTF8;
WebProxy proxy = new WebProxy("your proxy host IP", port);
client.Proxy = proxy;
string sourceUrl = "xxxxxx";
try
{
using (Stream stream = client.OpenRead(new Uri(noaaSourceUrl)))
{
//......
}
}
catch (Exception ex)
{
throw;
}
}
在web.config中添加以下代码块解决了我的问题
<system.net>
<defaultProxy enabled="false" >
</defaultProxy>
</system.net>
在我的情况下,我收到了这个错误,因为我的域没有列在服务器上的Hosts文件中。如果将来其他人也面临同样的问题,请尝试在Host文件中进行输入并进行检查。
路径:C:''Windows''System32''drivers''etc
FileName:hosts
此代码使其可以在浏览器中访问的URL吗?
http://" + Request.ServerVariables["HTTP_HOST"] + Request.ApplicationPath + "/PageDetails.aspx?ModuleID=" + ID
您需要验证的第一件事是您正在制作的URL是否正确。然后检查浏览器,看看它是否正在浏览。然后使用Fiddler工具来检查网络上正在传递的内容。可能是通过代码调用的URL被错误地转义了。
然后检查是否存在与防火墙相关的问题。
我遇到了这个问题。代码在本地运行时运行良好,但在服务器上运行时运行不正常。使用psPing(https://technet.microsoft.com/en-us/sysinternals/psping.aspx)我意识到应用程序端口没有返回任何内容。结果是防火墙问题。我没有在Windows防火墙中启用我的应用程序端口。
管理工具>具有高级安全性的Windows防火墙将我的应用程序端口添加到入站规则,它就开始工作了。
不知怎的,应用程序端口号发生了变化,所以花了一段时间才弄清楚发生了什么——所以我想我会分享这种可能性,以防它能节省其他人的时间。。。
我已经解决了以下问题
连接尝试失败,因为连接方没有在一段时间或建立连接后正确响应失败,因为连接的主机无法响应
解决方案
我们需要在代码中配置代理设置。我使用Web.config文件的场景
添加代理地址如下
<system.net>
<defaultProxy>
<proxy proxyaddress="http://XXXXX:XXXX" bypassonlocal="True"/>
</defaultProxy>
</system.net>
还使用以下代码添加了代理凭据NetworkCredential-我在这里使用了我的本地凭据。
HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(url);
webReq.Credentials = new NetworkCredential("XXXX", "XXXXX");
webReq.Proxy.Credentials = new NetworkCredential("XXXX", "XXXX");
它对我有用!
第一种可能性:相关Web.config文件中的加密字符串应与在连接字符串中输入的字符串相同(如上所示)此外,当您更改"注册表编辑器"或
regedit.exe
中的任何内容(如在Run中所写)时,在进行任何更改后,请关闭注册表编辑器,并在Run中键入IISRESET
重置Internet信息服务。然后登录到您的环境。在运行时键入Services.msc并检查:
ASP.NET State Services的状态已启动。如果没有,右键单击它,通过"属性"将其"启动"类型更改为"自动"。
该特定银行的Iris ReportManager服务被列为已启动或未启动。如果它正在运行,它将显示列表中启动的"IRIS REPORT MANAGER SERVICE"。如果没有,则单击
IRIS.REPORTMANAGER.EXE
运行
然后再次重置IIS
我知道这是一篇旧帖子,但我遇到了完全相同的问题,我通过关闭导致问题的MALWAREBYTES
程序来使用它。
这可能是由服务器中的代理设置引起的。您可以尝试禁用代理设置,<defaultProxy enabled="false" />
如果以上解决方案不适用于您的情况。可能是您的请求被防火墙丢弃。检查防火墙设置。