WebMatrix でファイルのアップロード(2) の補足
執筆日時:

デカいファイルをアップロードしようとすると発生するのだけれど、この例外をトラップするのが面倒……。無理やり頑張ってトラップしてみたのだけれど、 try 文がやたらネストするし、 Request に少しでもアクセスしようものなら発生するので IsAjax が取れずに少し困っている。
思いついたのだけれど、無理してビューまたは Json を返そうとしなくてもステータスコードだけ返せばいいな。最初にわざとエラーを発生させるコードを書いてそこで return してしまえば、 try……catch 文のネストを減らせるし。
@{
try // Catch Request-too-long Error
{
var dummy = Request.Files;
}
catch (Exception e)
{
Response.StatusCode =
(int) HttpStatusCode.InternalServerError;
Response.Write(e.Message);
return;
}
if (IsPost)
{
:
:
これをするとどうなるのかというと、

まず、デカいファイルを投げる(既定では約4MB以上)。

サーバーでエラーが発生し、ステータスコード(よくわからんけど5**)を返す。

$.ajax() の error プロパティでそれを拾って……

HTML を更新する。ブラウザーからアクセスしたときは、まぁ、なんかエラー画面が表示されるのだろう。とりあえずこれでいいか。