IQ49

IT業界の感想

Asp.Net CoreでIISに30MB以上のファイルをアップロードする

30MBと言ったが正確には30000000バイトだ。

環境

.Net Core 3.1

手順

まずweb.configにrequestLimitsを追加する。maxAllowedContentLengthに指定した数が最大アップロード容量だ。
Asp.Net Coreのテンプレートにはweb.configが初期は存在しないから無いなら自分で作ってどうぞ。locationタグが漏れないよう注意。
Web.configじゃなくてIISの最大アップロードサイズ変更でいいかもしれんが試してないので知らん。

web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <security>
        <requestFiltering>
          <!-- Handle requests up to 1 GB -->
          <requestLimits maxAllowedContentLength="1073741824" />
        </requestFiltering>
      </security>
    </system.webServer>
  </location>
</configuration>

次にStartup.csでコンフィグ設定している箇所にIISServerOptionsとFormOptionsの処理を追加する。

・Startup.csから抜粋

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
            
            services.Configure<IISServerOptions>(options =>
            {
                options.MaxRequestBodySize = 1073741824; // 1GB
            });

            services.Configure<FormOptions>(x =>
            {
                x.ValueLengthLimit = 1073741824; // 1GB
                x.MultipartBodyLengthLimit = 1073741824; // 1GB
            });
        }

これでファイルアップロードの上限が増えてるはず。

終わりに

・参考サイト github.com

Asp.Net Coreのファイルアップロード方法は以下のサイト見ればだいたい分かる。 docs.microsoft.com

・ファイルアップロードの公式サンプル github.com