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