我已经提供了一个服务,我在一个azure webapp上托管。这将用于上传文件。 IIS具有内置的安全功能,可以限制文件上载大小。
要解决此问题,我已将以下内容放入web.config
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="80000000" />
</requestFiltering>
</security>
</system.webServer>
...
<system.web>
<httpRuntime maxRequestLength="80000" targetFramework="4.5.2" executionTimeout="9000" />
</system.web>
然而,这对我不起作用。只要我上传一个大文件(例如50mb)它就会用404打我。当我上传一个较小的文件(10mb)时,它工作正常。该服务是肥皂,通过https调用。呼叫没有超时,异常发生在5次调用之内,我的猜测是上传30mb然后它认为它受到攻击并中止。
我在这里错过了什么吗?
答案 0 :(得分:1)
您可以转到文件夹:
%WINDIR%\ SYSTEM32 \ INETSRV \
运行命令:
CTE
或者如果您只想为自己的应用设置它,请运行:
appcmd set config -section:requestFiltering -requestLimits.maxAllowedContentLength:80000000
您还需要将overrideModeDefault更新为&#39;允许&#39;在web.config中:
appcmd set config "Default Web Site/" -section:requestFiltering -requestLimits.maxAllowedContentLength:80000000
然后,您可以使用appcmd.exe更新您的web.config
希望this article和this article会对您有所帮助。
关于如何使用appcmd.exe,您可以看到https://technet.microsoft.com/en-us/library/cc772200%28v=ws.10%29.aspx
之后,将项目部署到azure webapp,然后重试。
答案 1 :(得分:0)
我做了那个配置,但是我解决了在ControllerBase上放置类似的问题:
protected override void OnResultExecuting(ResultExecutingContext filterContext)
{
base.OnResultExecuting(filterContext);
if(filterContext.Result.GetType().Name == "JsonResult")
filterContext.Result.GetType().GetProperty("MaxJsonLength").SetValue(filterContext.Result, int.MaxValue);
}