Web applications WebClient.UploadFile失败,为“0”;请求被中止:请求被取消;
我正在尝试使用将文件上载到HTTP URL。对于1M、2M等小文件,上传成功。但对于像12M这样的大文件,我有一个例外: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异常: 以下是维基百科回答中提到
The request was aborted: The request was canceled.
以前是否有人遇到过此问题,您能否分享解决方案
一些信息:
- 服务器正在使用ASP.NET 3.5李>
- 我上传时使用的HTTP方法是“PUT”
以下是维基百科回答中提到的解决方案。我添加了禁用写流缓冲的功能,这有助于解决内存不足的异常
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。谢谢你,泰斯。我现在解决了这个问题。谢谢你改进它。我改为把你的答案记下来。