首页 > 解决方案 > Nginx 连接超时问题中的 Asp.net Core 大文件上传

问题描述

我在 Digital Ocean 10$ Ubuntu Droplet 中运行 Asp.net 核心应用程序,上传多个或大文件时出现问题,一段时间后连接断开,不知道该怎么做是我的代理设置:

    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    client_max_body_size 1000m;
    client_body_buffer_size 1000m;
    uwsgi_read_timeout     1000s;
    proxy_connect_timeout 90;
    proxy_send_timeout 100;
    proxy_read_timeout 100s;
    fastcgi_send_timeout 1000s;
    fastcgi_read_timeout 1000s;
    proxy_buffers 32 4k;

标签: c#asp.net-mvclinuxnginxasp.net-core

解决方案


你有没有试过这个行动:

[RequestSizeLimit(1024*1024*100)]
public IActionResult Post(){
}

或 Program.cs 用于全局设置

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

或者这个来自中间件

app.UseWhen(context => context.Request.Path.StartsWithSegments("/api"), appBuilder =>
{
    context.Features.Get<IHttpMaxRequestBodySizeFeature>().MaxRequestBodySize = null;
    //TODO: take next steps
});

推荐阅读