【问题标题】:WebRequest GetResponse not responding, operation times outWebRequest GetResponse 没有响应,操作超时
【发布时间】:2011-08-09 17:13:46
【问题描述】:

我正在尝试创建一个 HttpWebRequest 以通过 POST 将数据发送到一个 REST Web 服务,然后在处理后使用一个额外的 HttpWebRequest 来下载响应。

POST 正在向 Web 服务发送二进制数据,如下所示:

HttpWebRequest uploadRequest = (HttpWebRequest)WebRequest.Create(baseAddress + uploadURIRequest);
uploadRequest.Timeout = Timeout.Infinite;
uploadRequest.ReadWriteTimeout = Timeout.Infinite;
uploadRequest.Method = "POST";
uploadRequest.ContentLength = fileInfo.Length;
uploadRequest.ContentType = "application/octet-stream";

using (Stream writeStream = uploadRequest.GetRequestStream())
{
    using (FileStream readStream = new FileStream(fileStreamFileName, FileMode.Open, FileAccess.Read))
    {
        byte[] data= new byte[readStream.Length];
        int bytesRead = readStream.Read(data, 0, (int)readStream.Length);
        writeStream.Write(data, 0, bytesRead);

        readStream.Close();
    }
    writeStream.Close();
}

然后发出下一个请求,告诉 Web 服务处理服务器上的数据并返回状态响应。

HttpWebRequest processRequest = (HttpWebRequest)WebRequest.Create(baseAddress + processURIRequest);
processRequest.Timeout = 10000;
processRequest.ReadWriteTimeout = 10000;
processRequest.ContentType = "GET";

HttpWebResponse processRequestResponse = (HttpWebResponse)processRequest.GetResponse();

using (Stream processRequestResponseStream = processRequestResponse.GetResponseStream())
{
    //Do stuff...

}

当我更改内容类型时,它适用于 XML 数据。但是,当我将它与二进制数据保持如上所示时,操作总是超时......即使我将超时时间增加到超过 10 秒。它正在执行的处理不应花费这么长时间才能返回。

当我调试时,它总是挂在与 GetResponse 的线上:

HttpWebResponse processRequestResponse = (HttpWebResponse)processRequest.GetResponse();

【问题讨论】:

  • 您的流程请求看起来设置不正确。您将 ContentType 设置为 get 并且没有设置内容长度或方法
  • 您的代码中没有一个错误吗?您正在设置 ContentLength=FileStream.Length,但仅上传 FileStream.Length-1 个字节。
  • 抱歉,这只是我在尝试简化我在此处发布的代码时的一个错误。

标签: c# wcf rest httpwebrequest httpwebresponse


【解决方案1】:

添加

HttpWebResponse uploadRequestResponse = (HttpWebResponse)uploadRequest.GetResponse();

写入流后解决了这个问题。

【讨论】:

  • 写到哪个之后?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多