Обрабатывать "потенциально опасное значение Request.Form..."

Каков наилучший способ обработки таких ошибок, как

От клиента было обнаружено потенциально опасное значение Request.Form "

в ASP.NET?

Я хотел бы сохранить проверку, так как мои формы не имеют веских причин, позволяющих указывать символы HTML. Однако я не совсем уверен, как справиться с этой ошибкой более дружелюбно. Я попытался обработать его в Page_Error, но, насколько я могу судить, это происходит в секции нижнего уровня, поэтому функция Page_Error никогда не срабатывает.

Поэтому мне может прибегнуть к использованию Application_Error в моем файле Global.asax. Если это единственный способ справиться с этой ошибкой, есть ли способ специально обработать эту ошибку? Я не хочу обрабатывать все ошибки приложения одинаково.

Спасибо

Ответы

Ответ 1

У вас есть два варианта:

// 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();
    }
}

Ответ 2

Вы не хотите добавлять лишний багаж в Global.asax. Если вы удовлетворены тем, что это вызвано ложными вводами данных, тогда обратитесь к вводу, независимо от того, откуда он поступает:

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

Сосредоточьтесь на причине ошибки: -)

Ответ 3

Вы можете использовать Server.GetLastError() в Application_Error, чтобы получить исключение, которое было выбрано, проверить исключение и ответить как вам нравится (перенаправить на страницу и т.д.)