无法从传输连接读取数据:流读取器错误

本文关键字:读取 错误 数据 传输 连接 | 更新日期: 2023-09-27 18:09:31

下面的代码会抛出错误:
"无法从传输连接读取数据:连接已关闭"-System.IO.IOException.
此方法接收URL作为参数,执行它并从web服务器获得响应。

当使用Stream读取响应时,While循环中的liBytesRead = lStream.Read(lBytes, 0, 128);行抛出引号内的错误。

public bool GetFromUrl(ref string psUrl, ref string rsResult, ref int piTimeoutSeconds)
{
  System.Text.StringBuilder lStringB = new System.Text.StringBuilder();
try {
    WebRequest lWebRequest = WebRequest.Create(psUrl);
    int liTimeout = piTimeoutSeconds * 1000;
    lWebRequest.Timeout = liTimeout;
    WebResponse lWebResponse = lWebRequest.GetResponse;
    Stream lStream = default(Stream);
    lStream = lWebResponse.GetResponseStream;
    byte[] lBytes = new byte[129];
    int liBytesRead = lStream.Read(lBytes, 0, 128);
    System.Text.Encoding lEncode = System.Text.Encoding.GetEncoding("utf-8");
    while (liBytesRead > 0) {
        lStringB.Append(lEncode.GetString(lBytes, 0, liBytesRead));
        liBytesRead = lStream.Read(lBytes, 0, 128);
    }
    lStream.Close();
    rsResult = lStringB.ToString();
    return true;
} catch (System.IO.IOException e) {
    rsResult = e.ToString();
    return false;
}
}

知道为什么会发生.....
谢谢。

无法从传输连接读取数据:流读取器错误

看起来像是web服务器在连接完成之前关闭了连接。
试着与

HttpRequest.KeepAlive = false; 
HttpRequest.ProtocolVersion = HttpVersion.Version10;

详情请参阅:http://sysrc.code4beer.org/2009/06/30/webrequest-unable-to-read-from-transport/