gpt4 book ai didi

c# - ASP.NET Core web.config requestFiltering 不覆盖 applicationhost.config

转载 作者:行者123 更新时间:2023-12-03 17:28:42 27 4
gpt4 key购买 nike

我正在尝试将大文件上传到我的 ASP.NET Core MVC 2.1 应用程序中的 API Controller 操作。为此,我一直试图弄清楚如何通过 IIS Express 允许这样做,这就是我通过 Visual Studio 运行应用程序的方式。正如所建议的,这应该可以通过添加 web.config 来实现。文件到项目根目录,内容如下:

<?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]在 Controller Action 上。

相反,我发现它可以通过向 applicationhost.config 中的站点添加相同的配置来工作。在 \.vs\config文件夹:

  <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 ?或者是否有我一直无法弄清楚的解决方案?

最佳答案

我有一个类似的问题,我用这个添加了一个 web.config

<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。然后我更新了条目
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseKestrel(options =>
{
options.Limits.MaxRequestBodySize = 100000000; //100MB
});
然后用 [RequestSizeLimit(100_000_000)] 装饰 Controller
这些解决方案在本地解决并为我提供了产品。

关于c# - ASP.NET Core web.config requestFiltering 不覆盖 applicationhost.config,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58069631/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com