【发布时间】:2016-03-07 04:05:39
【问题描述】:
我的 ASP.NET WebAPI 托管在 IIS 7.5+ 上,默认最大允许内容长度设置为 30000000 字节。
当我在 IIS 上打开我的 webAPI 的 Request Filtering 功能并检查那里的条目时,它显示 30000000 字节,但是当我将大于 4MB 的文件上传到 webAPI 时,它会引发如下异常。
消息“超出最大请求长度。”
堆栈跟踪:
在 System.Web.HttpBufferlessInputStream.ValidateRequestEntityLength() 在 System.Web.HttpBufferlessInputStream.GetPreloadedContent(Byte[] 缓冲区,Int32& 偏移量,Int32& 计数) 在 System.Web.HttpBufferlessInputStream.BeginRead(Byte[] 缓冲区,Int32 偏移量,Int32 计数,AsyncCallback 回调,对象状态) 在 System.IO.Stream.b__d(流流,ReadWriteParameters args,AsyncCallback 回调,对象状态) 在 System.Threading.Tasks.TaskFactory`1.FromAsyncTrim[TInstance,TArgs](TInstance thisRef, TArgs args, Func`5 beginMethod, Func`3 endMethod) 在 System.IO.Stream.BeginEndReadAsync(字节 [] 缓冲区,Int32 偏移量,Int32 计数) 在 System.IO.Stream.ReadAsync(字节 [] 缓冲区,Int32 偏移量,Int32 计数,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 的文件可以正常上传。
知道我应该寻找哪些位置来查看设置此限制的位置吗?
我的尝试:
我检查了服务器的 Web.config、machine.config 以及所有应用程序的 web.config,但在任何地方都没有看到任何大小限制条目。
我还尝试在 webAPI 的 web.config 中设置条目 - maxRequestLength 和 maxAllowedContentLength 文件,如要求增加文件上传大小限制的各种其他问题中所述。在 IIS 中执行请求过滤功能向我展示了新值,但对于大于 4MB 的文件,我仍然遇到相同的异常。
【问题讨论】:
-
你试过你设置
<httpRuntime maxRequestLength="size in kilo bytes" />吗? -
我认为这个答案可能会有所帮助:stackoverflow.com/a/30870507/1718624
-
是的,我尝试在配置文件中进行设置,在设置请求过滤功能后向我显示更新的值,但我仍然收到相同的错误。
-
您确定您的站点中没有其他 web.config 文件吗?
标签: c# asp.net iis asp.net-web-api iis-7.5