我正在尝试将大文件上传到我的ASP.NET Core MVC2.1应用程序中的一个API控制器操作。为此,我一直在尝试找出如何通过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]等属性。
相反,我发现它是通过将相同的配置添加到\.vs\config文件夹中的applicationhost.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?或者有没有什么解决方案是我一直想不出来的?
发布于 2021-02-04 06:09:15
我遇到了类似的问题,我添加了一个带有以下内容的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)]装饰控制器
这些解决方案为我在本地和prod中解决。
https://stackoverflow.com/questions/58069631
复制相似问题