HTTP错误404.13 - asp.net核心2.0

时间:2017-10-01 09:03:38

标签: c# asp.net-mvc .net-core asp.net-core-2.0

  

HTTP错误404.13 - 未找到请求过滤模块是   配置为拒绝超过请求内容长度的请求。

     

验证   configuration/system.webServer/security/requestFiltering/requestLimits@maxAllowedContentLength   在applicationhost.config或web.config文件中进行设置。

我不知道我可以在哪里配置,在asp.net核心2中有更改使用appsettings.json。

即使尝试这样做,但它不起作用。

services.Configure<FormOptions>(options =>
{
    options.MultipartBodyLengthLimit = 300_000_000;
});

3 个答案:

答案 0 :(得分:21)

如果您使用IIS,则需要在asp.net core 2.0 app中添加web.config。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- This will handle requests up to 700MB (CD700) -->
        <requestLimits maxAllowedContentLength="737280000" />
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

如果您不使用IIS,则可以在控制器中使用[RequestSizeLimit(long.MaxValue)][DisableRequestSizeLimit]属性。

此外,您可以在Program.cs中添加全局设置:

.UseKestrel(o => { o.Limits.MaxRequestBodySize = null; })

有关详细信息,请参阅此https://github.com/aspnet/Announcements/issues/267

答案 1 :(得分:0)

对于我的Core 2.2 MVC项目,将[RequestSizeLimit(long.MaxValue)]属性和上面的web.config组合起来起作用。单独使用web.config就可以了-只是不要使用该属性。应用程序崩溃并意外关闭了浏览器。另外,由于我的最大请求大小为200Mb,因此,如果有可能生成404.13(要求过大)结果,则您的常规状态代码处理将对404.13 不起作用(请参见Startup.cs, Configure(),

app.UseStatusCodePagesWithReExecute("/Error/Error", "?statusCode={0}");

行)。但是,状态代码页处理适用于其他代码。我必须将自定义错误状态处理插入到web.config文件中,以使用优美的用户友好视图来处理404.13。请注意,针对404.13的“删除”似乎也会删除状态码404 ...,那么您的错误控制器方法将无法处理404。下面的web.config中有两个自定义错误处理程序-一个用于404.13,另一个用于以修复404。希望这可以帮助某人:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- This will handle requests up to 201Mb -->
        <requestLimits maxAllowedContentLength="210763776" />
      </requestFiltering>
    </security>
    <httpErrors errorMode="Custom" existingResponse="Replace">
      <remove statusCode="404" subStatusCode="13" />
      <remove statusCode="404" />
      <error statusCode="404"
             subStatusCode="13"
             prefixLanguageFilePath=""
             path="/Error/UploadTooLarge"
             responseMode="Redirect" />
      <error statusCode="404"
             prefixLanguageFilePath=""
             path="/Error/PageNotFound"
             responseMode="Redirect" />
    </httpErrors>
  </system.webServer>
</configuration>

最终结果是所有正常状态代码都由错误/错误处理,并且404.13和404状态代码具有自定义处理功能……并且周围都有漂亮的视图!

答案 2 :(得分:0)

内容长度的默认值 30000000 字节,对于某些文件上传功能来说,这还不够。         

<system.webServer>
    <security>

      <requestFiltering>
        <requestLimits maxAllowedContentLength="500000000"></requestLimits>

      </requestFiltering>
    </security>

  </system.webServer>