【问题标题】:Time out Exception when invoking GetResponse()调用 GetResponse() 时出现超时异常
【发布时间】:2011-04-20 01:29:34
【问题描述】:

我创建了一个WebRequest 来将一些 HTML 内容发布到另一个 Web 服务器。当我使用普通文本内容时,它可以工作,但是当我发布 HTML 内容时,调用 GetResponse() 时出现超时错误。

WebResponse response = request.GetResponse()

我怎样才能找出问题所在? 我尝试为WebException 添加错误处理程序,但无法捕获异常。

请求代码:

byte[] byteArray = Encoding.UTF8.GetBytes(sPostData);

// Create a request using a URL that can receive a post. 
WebRequest request = WebRequest.Create(httpUri);
// Set the 'Timeout' property in Milliseconds.
//request.Timeout = 20000;
// Set the ContentType property of the WebRequest.
request.ContentType = contentType;
// Set the Method property of the request to POST.
request.Method = postMethod;
// Set the ContentLength property of the WebRequest.
request.ContentLength = byteArray.Length;
// Get the request stream.
using (Stream PostStream = request.GetRequestStream())
{
    PostStream.Write(byteArray, 0, byteArray.Length);
}
// Get the response.
using (WebResponse response = request.GetResponse())
{
    // Get the stream containing content returned by the server.
    using (Stream responseStream = response.GetResponseStream())
    {
        using (StreamReader reader = new StreamReader(responseStream))
        {
            string responseFromServer = reader.ReadToEnd();

            result = responseFromServer;
        }
    }
}

【问题讨论】:

  • 能否也显示请求代码?
  • 请看问题中添加的请求代码

标签: c# webrequest getresponse


【解决方案1】:

您应该使用Fiddler 或其他等效应用程序查看网络流量。这可能会显示服务器是否完全响应,或者它是否响应延迟。

您还应该查看服务器日志或 Windows 事件日志 - 也许服务器不喜欢发送 HTML,并且正在记录错误。在这种情况下,它可能会简单地决定您正在尝试破解它,并且可能决定根本不回答您。

【讨论】:

  • 感谢约翰的回复。如果我按如下方式修改 html 它可以工作,

    Test

    我在 HTML 中有一些泰语字符,会不会有问题?
  • 我使用如下,byte[] byteArray = Encoding.UTF8.GetBytes(sPostData);
  • 我检查了事件日志,当我收到此异常时没有捕获任何内容。
  • @Nilaa:我必须查看接收消息的服务器上的代码。另外,如果服务器运行的是 ASP.NET,你应该尝试打开ASP.NET Health Monitoring
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多