ASP.NET Coreアプリケーションで大きいサイズのファイルを送信するとエラーが発生する

ASP.NET Coreアプリケーションで大きいサイズのファイルを送信するとエラーが発生する現象と対処法を紹介します。

現象

ASP.NET Coreアプリケーションで大きなサイズのファイルアップロード時、WebAPI呼び出し時に大きなサイズのPOSTを送信すると、 以下のエラーが発生します。

  • HTTP ERROR 400
  • 413 (Content Too Large)

ASP.NET Coreアプリケーションで大きいサイズのファイルを送信するとエラーが発生する:画像1
ASP.NET Coreアプリケーションで大きいサイズのファイルを送信するとエラーが発生する:画像2

原因

アップロードサイズの制限を受けている可能性があります。

対処法: IISの場合

ASP.NET CoreアプリケーションのホストがIISの場合以下を確認します。

Web.config maxAllowedContentLength の設定

30MB程度のファイルアップロードでエラーになる場合、 Web.configファイルにmaxAllowedContentLength を追加します。

詳細は以下の記事を確認してください。

アプリケーションの MultipartBodyLengthLimit の設定

Web.configのmaxAllowedContentLength の設定でエラーが解消しない場合は、MultipartBodyLengthLimit の設定を記述します。

記述例 (Promgram.cs)
using Microsoft.AspNetCore.Http.Features;

namespace PngInfoWeb
{
  public class Program
  {
    public static void Main(string[] args)
    {
      var builder = WebApplication.CreateBuilder(args);
      builder.Services.AddRazorPages();

      builder.Services.Configure<FormOptions>(options =>
      {
        //120MBまで許可
        options.MultipartBodyLengthLimit = 120L * 1024L * 1024L;
      });

      var app = builder.Build();

      app.UseStaticFiles();
      app.UseRouting();
      app.MapRazorPages();
      app.Run();
    }
  }
}


Configureメソッドに与えるデリゲートに以下のコードを記述します。

  options.MultipartBodyLengthLimit = 120L * 1024L * 1024L;

対処法: Kestrelの場合

KestrelにWebアプリケーションがホストされている場合、Web.configは使われないため、以下の設定を確認します。

アプリケーションの MaxRequestBodySize の設定

記述例 (Promgram.cs)
using Microsoft.AspNetCore.Http.Features;

namespace PngInfoWeb
{
  public class Program
  {
    public static void Main(string[] args)
    {
      var builder = WebApplication.CreateBuilder(args);
      builder.Services.AddRazorPages();

      builder.WebHost.ConfigureKestrel(options =>
      {
        //120MBまで許可
        options.Limits.MaxRequestBodySize = 120L * 1024L * 1024L;
      });

      var app = builder.Build();

      app.UseStaticFiles();
      app.UseRouting();
      app.MapRazorPages();
      app.Run();
    }
  }
}


ConfigureKestrelメソッドに与えるデリゲートに以下のコードを記述します。

  options.Limits.MaxRequestBodySize = 120L * 1024L * 1024L;


これらの対策でエラーが買解消されるかを確認します。

AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2025-04-29
Copyright © 1995–2025 iPentec all rights reserverd.