我在IIS 7.5+上托管了我的ASP.NET WebAPI,默认的Max允许内容长度设置为30000000字节。
当我在IIS上打开我的webAPI的Request Filtering
功能并检查其中的条目时,它会显示30000000字节,但是当我上传大于4MB的文件到webAPI时,它会抛出异常,如下所示。
消息“超出了最大请求长度。”
堆栈追踪:
at System.Web.HttpBufferlessInputStream。 ValidateRequestEntityLength () 在System.Web.HttpBufferlessInputStream.GetPreloadedContent(Byte [] buffer,Int32& offset,Int32& count) 在System.Web.HttpBufferlessInputStream.BeginRead(Byte []缓冲区,Int32偏移量,Int32计数,AsyncCallback回调,对象状态) 在System.IO.Stream.b__d(Stream stream,ReadWriteParameters args,AsyncCallback callback,Object state) 在System.Threading.Tasks.TaskFactory`1.FromAsyncTrim [TInstance,TArgs](TInstance thisRef,TArgs args,Func`5 beginMethod,Func`3 endMethod) 在System.IO.Stream.BeginEndReadAsync(Byte []缓冲区,Int32偏移量,Int32计数) 在System.IO.Stream.ReadAsync(Byte []缓冲区,Int32偏移量,Int32计数,CancellationToken cancellationToken) 在System.Web.Http.WebHost.SeekableBufferedRequestStream.d__0.MoveNext() ---从抛出异常的先前位置开始的堆栈跟踪结束--- 在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 在System.Net.Http.HttpContentMultipartExtensions.d__8.MoveNext()
小于4MB的文件上传正常。
知道我应该找哪些地方看看这个限制的设定位置了吗?
我尝试了什么:
我检查过Server的Web.config,machine.config以及所有应用程序的web.config,但是在任何地方都没有看到任何大小限制条目。
我还尝试在webAPI的web.config - maxRequestLength
和maxAllowedContentLength
文件中设置条目,这些文件在要求增加文件上传大小限制的各种其他问题中提到。在IIS中执行请求过滤功能时,我向我展示了新值,但对于大于4MB的文件,我仍然得到相同的异常。
答案 0 :(得分:3)
如上所述here,您应同时设置maxRequestLength
和maxAllowedContentLength
。
您可以通过以下方式在web.config中设置maxRequestLength
:
<system.web>
<httpRuntime maxRequestLength="size in kilo bytes" />
</system.web>
此设置指定输入流缓冲的限制 阈值,以KB为单位。此限制可用于防止拒绝服务 例如,由用户发布大文件引起的攻击 服务器。
默认值为4096(4 MB)。
此外,您可以通过以下方式在web.config中设置maxAllowedContentLength
:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="size in bytes" />
</requestFiltering>
</security>
</system.webServer>
指定请求中内容的最大长度(以字节为单位)。
默认值为30000000。
还要确保在正确的文件中更改配置。有关asp.net配置文件的更多信息,您可以看到ASP.NET Configuration File Hierarchy and Inheritance