System.NET.WebException:无法从传输连接中读取数据:连接已关闭



有时通过下载(大)文件发生以下错误:

system.net.webexception:WebClient请求期间发生了异常。---> system.io.ioexception:无法从传输连接中读取数据:连接已关闭。 在system.net.connectstream.endread(iasyncresult asyncresult) 在System.net.webclient.downloadbitsreadcallbackstate(downloadBitsState State,iasyncresult结果) ---内部异常堆栈跟踪的结尾---

对我来说,听起来像服务器时间,但我不确定。我希望你们能向我解释这个问题。Mabe为此提供了解决方案。

下载逻辑看起来像:

            WebClient client = new WebClient();
            client.DownloadFileCompleted += (sender, e) =>
            {
                if (e.Error != null)
                {
                    BridgeManager.logNow("DownloadingError:n" + e.Error.ToString());
                }
                if (e.Cancelled)
                {
                    BridgeManager.logNow("Game file download canceled!");
                }
                else
                {
                    BridgeManager.logNow("Game files downloaded!");
                    success = true;
                    downloadFinished.Set();
                }
            };


            client.DownloadFileAsync(downloadGameAddr, file);

经过一番研究,在@tetsuyayamamoto的帮助下,我找到了一个对我有用的解决方案。

我创建了一个从webclient派生的类,然后修改了它的WebRequest:

public class MyWebClient : WebClient
{
    protected override WebRequest GetWebRequest(Uri uri)
    {
        HttpWebRequest w = (HttpWebRequest)base.GetWebRequest(uri);
        w.ProtocolVersion = Version.Parse("1.0");
        return (WebRequest)w;
    }
}

它基本上会在他的评论中做@tetsuyayamamoto的建议。我只是将WebRequest的Proderversion更改为http 1.0

相关内容

  • 没有找到相关文章

最新更新