だるろぐ

明日できることは、今日しない。

WebMatrix でファイルのアップロード(2) の補足

f:id:daruyanagi:20120820014842p:plain

デカいファイルをアップロードしようとすると発生するのだけれど、この例外をトラップするのが面倒……。無理やり頑張ってトラップしてみたのだけれど、 try 文がやたらネストするし、 Request に少しでもアクセスしようものなら発生するので IsAjax が取れずに少し困っている。

WebMatrix でファイルのアップロード(2) - だるろぐ

思いついたのだけれど、無理してビューまたは 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)
    {
        :
        :

これをするとどうなるのかというと、

f:id:daruyanagi:20120820210027p:plain

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

f:id:daruyanagi:20120820210114p:plain

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

f:id:daruyanagi:20120820210207p:plain

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

f:id:daruyanagi:20120820014842p:plain

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