Обрабатывать "потенциально опасное значение 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, чтобы получить исключение, которое было выбрано, проверить исключение и ответить как вам нравится (перенаправить на страницу и т.д.)