【ASP.NET】HttpRequestValidationExceptionを捕まえる

user-pic
0 Clip to Evernote



ASP.NET1.1では、クロスサイトスクリプティング対策のため、
textbox等にタグ文字などの文字を入力したしサーバーへ送信した際、強制的に例外ページに飛ぶ。

これは、validateRequestオプションをtrueにすることによって機能する(デフォルトtrue)
ちなみに指定は、Pageディレクティブもしくは、(マシン・アプリ)構成ファイルにて設定可能だ。

この例外ページに飛ぶ際、例外をキャッチしてカスタムページを表示したい。
ヘルプを見ると、入力文字がチェックに該当した際、HttpRequestValidationException クラスが発生することがわかった。

ので、単純にGlobal.asax→Application_Errorイベントでtry-catchすればいいだろうと思ったが、
どうもうまくいかない。

調べたら、こんな風にしたらカスタムページを表示できることがわかった。

1.コンストラクタを記述し、自分のErrorPageプロパティに自分のaspx名を設定

public WebForm1() : base() {
  this.ErrorPage = "WebForm1.aspx";
}

2.OnErrorをオーバーライドし、HttpRequestValidationExceptionを判断

protected override void OnError(EventArgs e) {
  Exception err = Server.GetLastError();
  if (err.GetBaseException() is HttpRequestValidationException ){
    Response.Redirect("Error.aspx");
  }
}



■関連記事


ドミノ・ピザ【PC向けサイト】 楽天トラベル株式会社 NEC Direct ・NECダイレクト