58

我正在使用以下在本地机器上运行的代码,但是当我在服务器上尝试相同的代码时,它会抛出错误

连接尝试失败,因为连接的一方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应

这是我的代码:

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);

是因为任何防火墙设置吗?

4

12 回答 12

24

我遇到了类似的问题,必须使用以下方法将 URL 从字符串转换为 Uri 对象:

Uri myUri = new Uri(URLInStringFormat, UriKind.Absolute);

(URLInStringFormat 是您的 URL)尝试使用 Uri 而不是字符串进行连接,如下所示:

WebClient client = new WebClient();
client.OpenRead(myUri);
于 2013-10-22T11:05:57.650 回答
17

明确设置代理地址web.config解决了我的问题

<system.net> 
    <defaultProxy> 
            <proxy usesystemdefault = "false" proxyaddress="http://address:port" bypassonlocal="false"/> 
    </defaultProxy> 
</system.net>

在使用 Web 服务时解决“TCP 错误代码 10060:连接尝试失败...”

于 2015-05-11T12:40:31.147 回答
6

我知道这张票很旧,但我刚刚遇到了这个问题,我想我会发布发生在我身上的事情以及我是如何解决的:

在我的服务中,我打电话给另一个网络服务。像傻瓜一样,我在发布 Web 服务时忘记确保 DNS 设置正确,因此我的 Web 服务在发布时试图从 api.myproductionserver.local 调用,而不是 api.myproductionserver.com。导致超时的是后端 Web 服务。

无论如何,我想我会传递这个。

于 2015-11-03T15:20:58.527 回答
4

在web.config中添加以下代码块解决了我的问题

 <system.net>
    <defaultProxy enabled="false" >
    </defaultProxy>
  </system.net>
于 2019-06-14T07:18:29.467 回答
3

我知道这篇文章是 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;
            }
        }
于 2018-12-04T09:49:06.327 回答
2

此代码可在浏览器中访问的 URL 是否可以访问?

http://" + Request.ServerVariables["HTTP_HOST"] + Request.ApplicationPath + "/PageDetails.aspx?ModuleID=" + ID

您需要验证的第一件事是您创建的 URL 是否正确。然后在浏览器中检查它是否正在浏览。然后使用Fiddler工具检查通过网络传递的内容。可能是通过代码调用的 URL 被错误地转义了。

然后检查防火墙相关问题。

于 2013-07-17T07:15:31.633 回答
2

我有这个问题。代码在本地运行时运行良好,但在服务器上运行时却不行。使用 psPing ( https://technet.microsoft.com/en-us/sysinternals/psping.aspx ) 我意识到应用程序端口没有返回任何内容。原来是防火墙问题。我没有在 Windows 防火墙中启用我的应用程序端口。

管理工具 > 具有高级安全性的 Windows 防火墙将我的应用程序端口添加到入站规则并开始工作。

不知何故,应用程序端口号已更改,因此需要一段时间才能弄清楚发生了什么 - 所以我想我会分享这种可能性,以防它节省其他人的时间......

于 2017-02-21T09:06:58.553 回答
2

就我而言,我收到此错误是因为我的域未列在服务器上的主机文件中。如果将来其他人遇到同样的问题,请尝试在主机文件中输入并检查。

路径:C:\Windows\System32\drivers\etc文件名
:主机

于 2020-08-30T12:46:25.570 回答
2

我已经解决了以下问题

连接尝试失败,因为连接的一方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应

解决方案

我们需要在代码中配置代理设置。我使用 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");

这个对我有用!

于 2021-08-13T12:35:41.063 回答
1
  1. 第一种可能性:相关 Web.config 文件中的加密字符串应该与连接字符串中输入的字符串相同(如上所示)而且,当您在“注册表编辑器”或regedit.exe(如运行时所写)中更改任何内容时,然后进行任何更改后,关闭注册表编辑器并通过键入IISRESETRun 来重置您的 Internet 信息服务。然后登录到您的环境。

  2. 在运行时键入 Services.msc 并检查:

    1. ASP.NET 状态服务的状态已启动。如果没有,则右键单击它,通过属性,将其启动类型更改为自动。

    2. 该特定银行的 Iris ReportManager 服务是否已启动。如果它正在运行,它将在列表中显示“IRIS REPORT MANAGER SERVICE”作为启动。如果没有,然后通过单击运行它IRIS.REPORTMANAGER.EXE

    然后再次重置 IIS

于 2013-08-27T05:52:56.920 回答
1

我知道这是一篇旧帖子,但我遇到了完全相同的问题,我设法通过关闭MALWAREBYTES导致问题的程序来使用它。

于 2018-12-28T01:21:05.813 回答
0

这可能是服务器中的代理设置问题。您可以尝试禁用代理设置,
<defaultProxy enabled="false" />

于 2017-06-21T09:44:18.980 回答