14

次のようなエラーを処理する最良の方法は何ですか

潜在的に危険な Request.Form 値がクライアントから検出されました"

ASP.NETで?

私のフォームには HTML 文字を許可する正当な理由がないため、検証をオンのままにしたいと思います。ただし、このエラーをよりフレンドリーな方法で処理する方法がよくわかりません。で処理しようとしましたPage_Errorが、私が知る限り、これは下位レベルのセクションで発生するため、Page_Error関数は決して起動しません。

Application_Errorしたがって、ファイルでの使用に頼る必要があるかもしれませんGlobal.asax。これがそのエラーを処理する唯一の方法である場合、その 1 つのエラーを具体的に処理する方法はありますか? すべてのアプリケーション エラーを同じ方法で処理したくありません。

ありがとう

4

3 に答える 3

22

次の 2 つのオプションがあります。

// Editing your global.asax.cs
public class Global : System.Web.HttpApplication
{
    protected void Application_Error(object sender, EventArgs e)
    {
        Exception lastError = Server.GetLastError();
        if (lastError is HttpRequestValidationException)
        {
            Response.Redirect("~/RequestValidationError.aspx");
        }
    }
}

または

// Editing your CUser.aspx.cs
public partial class CUser : System.Web.UI.Page
{
    protected override void OnError(EventArgs e)
    {
        Response.Redirect("~/RequestValidationError.aspx");
        Context.ClearError();
    }
}
于 2009-12-11T20:17:58.457 に答える
3

Global.asax に不必要な荷物を追加する必要はありません。これが誤ったデータ入力によって引き起こされていることに満足している場合は、入力がどこから来ているかに関係なく、入力を処理します。

http://codersbarn.com/post/2008/11/01/ASPNET-Data-Input-Validation.aspx

エラーの原因に集中してください:-)

于 2009-12-11T20:25:41.717 に答える
1

Application_Error で使用Server.GetLastError()して、スローされた例外を取得し、例外を検査し、必要に応じて応答できます (ページにリダイレクトするなど)。

于 2009-12-11T20:13:59.927 に答える