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");
}
}





