Web applications WebClient.UploadFile失败,为“0”;请求被中止:请求被取消;

Web applications WebClient.UploadFile失败,为“0”;请求被中止:请求被取消;,web-applications,Web Applications,我正在尝试使用将文件上载到HTTP URL。对于1M、2M等小文件,上传成功。但对于像12M这样的大文件,我有一个例外: The request was aborted: The request was canceled. 以前是否有人遇到过此问题,您能否分享解决方案 一些信息: 服务器正在使用ASP.NET 3.5 我上传时使用的HTTP方法是“PUT” 我根据以下公式解决了这个问题: 顺便说一下,如果由于WebClient的缓冲导致OutOfMemory异常: 以下是维基百科回答中提到

我正在尝试使用将文件上载到HTTP URL。对于1M、2M等小文件,上传成功。但对于像12M这样的大文件,我有一个例外:

The request was aborted: The request was canceled.
以前是否有人遇到过此问题,您能否分享解决方案

一些信息:
  • 服务器正在使用ASP.NET 3.5
  • 我上传时使用的HTTP方法是“PUT”

我根据以下公式解决了这个问题:

顺便说一下,如果由于WebClient的缓冲导致OutOfMemory异常:
以下是维基百科回答中提到的解决方案。我添加了禁用写流缓冲的功能,这有助于解决内存不足的异常

public class ExtendedWebClient : WebClient
{
    public int Timeout { get; set; }
    public new bool AllowWriteStreamBuffering { get; set; }

    protected override WebRequest GetWebRequest(Uri address)
    {
        var request = base.GetWebRequest(address);
        if (request != null)
        {
            request.Timeout = Timeout;
            var httpRequest = request as HttpWebRequest;
            if (httpRequest != null)
            {
                httpRequest.AllowWriteStreamBuffering = AllowWriteStreamBuffering;
            }
        }
        return request;
    }

    public ExtendedWebClient()
    {
        Timeout = 100000; // the standard HTTP Request Timeout default
    }
}
用法:

var webClient = new ExtendedWebClient();
webClient.Timeout = Timeout.Infinite;
webClient.AllowWriteStreamBuffering = false;
webClient.UploadFile(url, filePath);

接收服务器是否配置为接受如此大的请求?例如,大多数ASP.NET网站的默认值为4 MB。谢谢你,泰斯。我现在解决了这个问题。谢谢你改进它。我改为把你的答案记下来。