.net core 2.0 MVC Webアプリで大きなファイルをアップロードするときに問題が発生します。
.net core 2.0でファイルサイズの制限を増やす方法を示す、この記事のような記事を見てきました。 Kestrelでアップロードリクエストの長さ制限を増やす
したがって、例に従って、両方のオプションを試しました。私は現在、これを私のProgram.csに持っています:
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseKestrel(options => options.Limits.MaxRequestBodySize = null)
.Build();
...そしてコントローラ上の私のajaxファイルのアップロード方法は次のようになります:
[HttpPost]
[RequestSizeLimit(1_074_790_400)]
[Route("api/article/uploadfile/{mediaType}")]
public async Task<IActionResult> UploadFile(string mediaType)
Request.Form.Files
を使用してアップロードしたファイルにアクセスします
ビューのJavaScriptは次のようになります。
$('#upload-videos').change(function () {
var files = $("#upload-videos").get(0).files;
uploadMedia(false, files);
})
function uploadMedia(isPhoto, files) {
var type;
if (isPhoto) {
type = "i";
}
else {
type = "v";
}
var data = new FormData();
if (files.length > 0) {
for (idx = 0; idx < files.length; idx++) {
data.append("fileImage" + idx, files[idx]);
}
$.ajax({
url: "/api/article/uploadfile/" + type,
type: "POST",
processData: false,
contentType: false,
dataType: false,
data: data,
success: function (jsonData) {
refreshUploadedImages(jsonData, isPhoto);
}
});
}
}
問題は、アップロード制限を増やすための変更があっても、応答が得られることです。
リソースの読み込みに失敗しました:サーバーは500()のステータスで応答しました
コントローラーメソッドの最初の行にブレークポイントを設定すると、ブレークポイントがヒットしないため、このコードに問題がないように見えます。
ファイルサイズが小さい場合はすべて正常に動作しますが、サイズが538,286 KBのファイルをアップロードしようとすると失敗します。
誰かがこれを手伝ってくれる?
更新:詳細については、RequestSizeLimitの設定に関係なく、アップロードファイルのサイズが122,211 KBから137,840 KBの間である場合に問題が発生するようで、エラーが常に発生します。
更新2:すべての.netコアとすべての.netコアnugetパッケージを2.1に更新しましたが、問題はまだ残っています。
同じ問題で他の人を助けるために、私はここで答えを見つけました: ASP.MVC CORE Webサイトの最大アップロードサイズ
次のように、ボディの長さの制限を削除する必要があることがわかります。
services.Configure<FormOptions>(x => x.MultipartBodyLengthLimit = 1_074_790_400);
FormOptions
はMicrosoft.AspNetCore.Http.Features
名前空間にあります。
この問題を解決するには、代わりにこのコードを使用できます[RequestSizeLimit(1_074_790_400)]
[DisableRequestSizeLimit]