首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET核心web.config requestFiltering不会覆盖applicationhost.config

ASP.NET核心web.config requestFiltering不会覆盖applicationhost.config
EN

Stack Overflow用户
提问于 2019-09-24 04:17:01
回答 1查看 1.7K关注 0票数 5

我正在尝试将大文件上传到我的ASP.NET Core MVC2.1应用程序中的一个API控制器操作。为此,我一直在尝试找出如何通过IIS Express实现这一点,这就是我通过Visual Studio运行应用程序的方式。正如建议的那样,这应该可以通过向项目根目录添加一个包含以下内容的web.config文件来实现:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<!-- Configuration for IIS integration -->
<configuration>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- 2 GB -->
        <requestLimits maxAllowedContentLength="2147483647" />
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

但是,这不会有任何效果,因为应用程序只返回HTTP Error 404.13 - Not Found,这表明请求太大。这些设置似乎已被IIS锁定,因此web.config不会覆盖它们。是的,我还在控制器操作上使用了[DisableFormValueModelBinding][DisableRequestSizeLimit]等属性。

相反,我发现它是通过将相同的配置添加到\.vs\config文件夹中的applicationhost.config中的站点来实现的:

代码语言:javascript
复制
  <location path="MySite">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600" requestTimeout="23:00:00" />
      <httpCompression>
        <dynamicTypes>
          <add mimeType="text/event-stream" enabled="false" />
        </dynamicTypes>
      </httpCompression>
      <!-- Everything above this point is auto-generated -->
      <security>
        <requestFiltering>
          <!-- 2 GB -->
          <requestLimits maxAllowedContentLength="2147483647" />
        </requestFiltering>
      </security>
    </system.webServer>
  </location>

然而,这个文件在GIT中并没有被跟踪,而且将它添加到GIT中似乎也不是一个好的解决方案。

是否出于某种安全原因或其他原因,似乎不允许web.config覆盖applicationhost.config?或者有没有什么解决方案是我一直想不出来的?

EN

回答 1

Stack Overflow用户

发布于 2021-02-04 06:09:15

我遇到了类似的问题,我添加了一个带有以下内容的web.config

代码语言:javascript
复制
<configuration>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- This will handle requests up to 700MB (CD700) -->
        <requestLimits maxAllowedContentLength="737280000" />
      </requestFiltering>
    </security>
  </system.webServer>][1]][1]
</configuration>

发得太快了。上述解决方案适用于iis express服务器,但不适用于docker。然后我更新了条目

代码语言:javascript
复制
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
        .UseKestrel(options =>
        {
            options.Limits.MaxRequestBodySize = 100000000; //100MB
        });

然后用[RequestSizeLimit(100_000_000)]装饰控制器

这些解决方案为我在本地和prod中解决。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58069631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档