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