設定を超えるリクエストは送信できませんmaxContentLength
。Webサーバーは、アプリケーションに到達する前にこの要求を強制終了し、このエラーを処理する可能性を提供します。したがって、それを処理したい場合は、の値をmaxContentLength
適度に大きな数に増やしてから、コントローラーアクション内ContentLength
でアップロードされたファイルのを確認する必要があります。
[HttpPost]
public ActionResult MyAction(MyViewModel model, HttpPostedFileBase document)
{
if (document != null && document.ContentLength > MAX_ALLOWED_SIZE)
{
ModelState.AddModelError("document", "your file size exceeds the maximum allowed file size")
return View(model);
}
...
}
しかし、明らかにはるかにクリーンな解決策は、ビューモデルでこれを直接処理することです。HttpPostedFileBase引数は必要ありません。これが、ビューモデルの対象です。
public class MyViewModel
{
[MaxFileSize(MAX_ALLOWED_SIZE)]
public HttpPostedFileBase Document { get; set; }
... some other properties and stuff
}
ここで、MaxFileSizeは明らかに、簡単に実装できるカスタム属性です。
そして今、あなたのPOSTアクションはより標準的になります:
[HttpPost]
public ActionResult MyAction(MyViewModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
...
}
私が書いた次の例を見てください。