Мне нужно добавить в мои api проверки для ошибки http исключений, чтобы перенаправить на мою страницу, я добавил следующий код, поэтому, когда неверный URL-адрес установлен, как показано ниже, он перенаправляет на мою страницу:
- Длина превышает максимально допустимую длину.
- Опасные символы: [>, <, &, *,:,….] </li>
Это работает нормально, но не работает только один случай: если я установил URL следующим образом: domain.net:1234api/v1/controller/action
(если вы заметили, что между портом и остальной частью URL отсутствует /
), он продолжает давать мне 400 с HTML-кодом:
A potentially dangerous Request.Path value was detected from the client (:)
System.Web.HttpRequest.ValidateInputIfRequiredByConfig() +11981492
System.Web.PipelineStepManager.ValidateHelper(HttpContext context) +52
и мне нужно перенаправить его на мою страницу с ошибкой, но она даже не запускает Application_Error
, и я попытался установить в своей веб-конфигурации пользовательские ошибки, но она все еще не работает, ниже мой код:
protected void Application_EndRequest(Object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
if (application.Response.StatusCode == 404)
Server.TransferRequest("~/HttpError.aspx");
}
protected void Application_Error(object sender, EventArgs e)
{
Exception exc = Server.GetLastError();
if (exc.GetType() == typeof(HttpException))
{
Server.TransferRequest("~/HttpError.aspx");
}
}
<configuration>
<system.web>
<customErrors mode="On" defaultRedirect="HttpError.aspx">
<error statusCode="400" redirect="HttpError.aspx"/>
</customErrors>
</system.web>
</configuration>
<system.webServer>
<httpErrors errorMode="Custom" defaultResponseMode="File">
<clear />
<error statusCode="400" path="HttpError.aspx"/>
</httpErrors>
</system.webServer>