我正在尝试通过 Amazon S3 已为我生成的 PUT 请求 URL 将文件发送到 S3。
我的代码对于小文件工作正常,但在发送几分钟后对于大文件(> 100 mb)会出错。
有错误的是:请求被中止:请求被取消。在 System.Net.ConnectStream.InternalWrite(布尔异步,Byte[] 缓冲区,Int32 偏移量,Int32 大小,AsyncCallback 回调,对象状态)
在 System.Net.ConnectStream.Write(Byte[] 缓冲区,Int32 偏移量,Int32 大小)
有人可以告诉我我的代码有什么问题阻止它发送大文件吗?这不是由于 Amazon PUT 请求 URL 过期,因为我将其设置为 30 分钟,并且在发送几分钟后问题就出现了。
代码最终在这行代码上出现异常:dataStream.Write(byteArray, 0, byteArray.Length);
再一次,它非常适合我发送到 S3 的较小文件。只是不是大文件。
WebRequest request = WebRequest.Create(PUT_URL_FINAL[0]);
//PUT_URL_FINAL IS THE PRE-SIGNED AMAZON S3 URL THAT I AM SENDING THE FILE TO
request.Timeout = 360000; //6 minutes
request.Method = "PUT";
//result3 is the filename that I am sending
request.ContentType =
MimeType(GlobalClass.AppDir + Path.DirectorySeparatorChar + "unzip" +
Path.DirectorySeparatorChar +
System.Web.HttpUtility.UrlEncode(result3));
byte[] byteArray =
File.ReadAllBytes(
GlobalClass.AppDir + Path.DirectorySeparatorChar + "unzip" +
Path.DirectorySeparatorChar +
System.Web.HttpUtility.UrlEncode(result3));
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
// this is the line of code that it eventually quits on.
// Works fine for small files, not for large ones
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
//This will return "OK" if successful.
WebResponse response = request.GetResponse();
Console.WriteLine("++ HttpWebResponse: " +
((HttpWebResponse)response).StatusDescription);
您应该设置Timeout http://msdn.microsoft.com/en-us/library/system.net.webrequest.timeout.aspx的财产WebRequest http://msdn.microsoft.com/en-us/library/system.net.webrequest.aspx到更高的值。它会导致请求在完成之前超时。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)