maxRequestLength + maxAllowedContentLength + HTTPS不起作用

时间:2016-04-07 15:35:07

标签: asp.net azure iis web-applications web-config

我已经提供了一个服务,我在一个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然后它认为它受到攻击并中止。

我在这里错过了什么吗?

2 个答案:

答案 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 articlethis 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);
    }