Как увеличить длину запроса на загрузку больших файлов в ASP. NET Core? - PullRequest
2 голосов
/ 05 августа 2020

Я разработал ASP. NET Core Web API, который используется для загрузки файлов. Я тестирую API через почтальона. Когда я пытаюсь загрузить файл размером более 28 МБ, возникает ошибка превышения длины запроса. Поэтому я попытался найти решение этой проблемы. Если я увеличиваю ошибку длины запроса, изменяя значение в web.config, он работает. Но мое требование - не использовать файл web.config. Если я увеличу MaxRequestBodySize сервера kestrel, он будет работать нормально, когда я запускаю приложение через Do tnet CLI, но не работает, когда я запускаю приложение через IIS express из Visual Studio 2019. Если я применяю атрибут [DisableRequestSizeLimit] в методе POST, он работает только на do tnet CLI, но не на IIS express. Как увеличить длину запроса глобально для IIS express и Do tnet CLI? Любая помощь приветствуется.

webBuilder.ConfigureKestrel((context, options) =>
                    {
                       
                        options.Limits.MaxRequestBodySize = 524288000;
                    });

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Это способ настроить его глобально без изменения web.config:

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

если не Kestrel:

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

OR через промежуточное ПО

        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;
            });

OR Вы также можете добавить заголовок к методу вашего контроллера:

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

//

  [RequestSizeLimit(524288000)]
  [DisableRequestSizeLimit]
  [HttpPost]
   public async Task<IActionResult> Post([FromBody] List<Obj> obj)
   {
   }
0 голосов
/ 05 августа 2020

При размещении вашего веб-приложения в IIS / IIS Express настройте файл web.config соответствующим образом. См. этот ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...