gpt4 book ai didi

c# - 如何增加请求长度以在 ASP.NET Core 中上传大文件?

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

我开发了一个用于上传文件的 ASP.NET Core Web API。我正在通过 postman 测试该 API。当我尝试上传超过 28 MB 的文件时,它会抛出请求长度超出错误。所以我试图找到解决这个问题的方法。如果我通过更改 web.config 中的值来增加请求长度错误,它会起作用。但我的要求是不使用 web.config 文件。如果我增加 kestrel 服务器的 MaxRequestBodySize,当我通过 Dotnet CLI 运行应用程序时它工作正常,但当我通过 IIS express 从 Visual Studio 2019 运行应用程序时它不起作用。如果我在 POST 方法上应用 [DisableRequestSizeLimit] 属性,它仅适用于 dotnet CLI,但不适用于 IIS express。如何全局增加 IIS express 和 Dotnet CLI 的请求长度?感谢您的帮助。

webBuilder.ConfigureKestrel((context, options) =>
{

options.Limits.MaxRequestBodySize = 524288000;
});

最佳答案

这是在不更改 web.config 的情况下全局配置它的方法:

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseKestrel(options =>
{
options.Limits.MaxRequestBodySize = 524288000;
});

如果不是红隼:

 .UseHttpSys(options =>
{
options.MaxRequestBodySize = 524288000;
});

通过中间件

        public void Configure(IApplicationBuilder app )
{
app.UseWhen(context => context.Request.Path.StartsWithSegments("/api"), appBuilder =>
{
context.Features.Get<IHttpMaxRequestBodySizeFeature>().MaxRequestBodySize = null;
});
}

如果不使用 UseWhen :

app.Run(async context =>
{
context.Features.Get<IHttpMaxRequestBodySizeFeature>().MaxRequestBodySize = 524288000;
});

您还可以向 Controller 方法添加 header :

  [DisableRequestSizeLimit]
[HttpPost]
public async Task<IActionResult> Post([FromBody] List<Obj> obj)
{
}

//

  [RequestSizeLimit(524288000)]
[DisableRequestSizeLimit]
[HttpPost]
public async Task<IActionResult> Post([FromBody] List<Obj> obj)
{
}

关于c# - 如何增加请求长度以在 ASP.NET Core 中上传大文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63265264/

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