System.Web.HTTPException处理无效

时间:2019-06-14 05:48:01

标签: .net asp.net-mvc http-error system.net.httpwebrequest httpexception

我需要为http异常错误添加到api验证中,以重定向到我的页面,我添加了以下代码,因此,当设置了如下所示的无效url时,它将重定向到我的页面:

  • 该长度超过了最大允许长度。
  • 危险字符:[>,<,&,*,:,...。]

这可以正常工作,但是只有一种情况不起作用:如果我将URL设置如下:domain.net:1234api/v1/controller/action(如果您注意到端口和其余URL之间缺少/, ),它不断为我提供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>

0 个答案:

没有答案