我有IIS 7.5+的默认最大允许内容长度设置为30000000字节的ASP.NET WebAPI。什么地方可以验证文件上传大小限制?
当我在IIS上打开我的webAPI的Request Filtering
功能并检查那里的条目时,它表示30000000字节,但是当我为webAPI上传大于4MB的文件时,它会抛出异常,如下所示。
消息“超出了最大请求长度”。
堆栈跟踪:
在System.Web.HttpBufferlessInputStream。 ValidateRequestEntityLength() 在System.Web.HttpBufferlessInputStream.GetPreloadedContent(字节[]缓冲液,的Int32 &偏移的Int32 &计数) 在System.Web.HttpBufferlessInputStream.BeginRead(字节[]缓冲液,的Int32偏移的Int32计数,AsyncCallback的回调,对象状态) at System.IO.Stream.b__d(Stream stream,ReadWriteParameters args,AsyncCallback callback,Object state) at System.Threading.Tasks.TaskFactory`1.FromAsyncTrim [TInstance,TArgs](TInstance thisRef,TArgs在System.IO.Stream.BeginEndReadAsync(Byte []缓冲区,Int32偏移量,Int32计数)上的参数为 (位于System.IO.Stream.ReadAsync(Byte []缓冲区,Int32偏移量,Int32计数,CancellationToken取消llationToken) at System.Web.Http.WebHost.SeekableBufferedRequestStream.d__0.MoveNext() ---从以前位置抛出异常的堆栈跟踪结束--- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务) 在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务task) 在System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 在System.Net.Http.HttpContentMultipartExtensions.d__8.MoveNext()
小于4MB的文件正在上传正常。
任何想法我应该寻找什么地方看看这个限制设置在哪里?
我曾尝试:
我已经检查服务器的Web.config,machine.config中以及所有应用程序的web.config,但看不到大小限制任何地方的任何条目。
我也尝试在webAPI的web.config - maxRequestLength
和maxAllowedContentLength
文件中设置条目,如其他各种要求增加文件上传大小限制的问题中所述。在IIS中这样做的请求筛选功能向我展示了新的价值,但对于大于4MB的文件,我仍然得到相同的异常。
你试过哟设置''? –
我认为这个答案可能会有所帮助:http://stackoverflow.com/a/30870507/1718624 – JonFriesen
这个怎么样:http://stackoverflow.com/questions/15506648/how-to-upload-a-large-file -with-asp-net-mvc4-web-api-with-progressbar – lcryder