CustomErrors does not work when setting redirectMode=“ResponseRewrite”

前端 未结 10 2053
野趣味
野趣味 2020-11-27 11:51

In a old site, I was changing the way that CustomErrors works by adding redirectMode=\"ResponseRewrite\" (new in 3.5 SP1):



        
10条回答
  •  时光取名叫无心
    2020-11-27 12:28

    I built an error page in aspx that transfers the query to an ASP.NET MVC controller. You can rewrite the query to this aspx page and it will transfer the query to your custom controller.

    protected void Page_Load(object sender, EventArgs e)
    {
      //Get status code
      var queryStatusCode = Request.QueryString.Get("code");
      int statusCode;
      if (!int.TryParse(queryStatusCode, out statusCode))
      {
        var lastError = Server.GetLastError();
        HttpException ex = lastError as HttpException;
        statusCode = ex == null ? 500 : ex.GetHttpCode();
      }
      Response.StatusCode = statusCode;
    
      // Execute a route
      RouteData routeData = new RouteData();
      string controllerName = Request.QueryString.Get("controller") ?? "Errors";
      routeData.Values.Add("controller", controllerName);
      routeData.Values.Add("action", Request.QueryString.Get("action") ?? "Index");
    
      var requestContext = new RequestContext(new HttpContextWrapper(Context), routeData);
      IController controller = ControllerBuilder.Current.GetControllerFactory().CreateController(requestContext, controllerName);
      controller.Execute(requestContext);
    }
    

    Find more details here : https://stackoverflow.com/a/27354140/143503

提交回复
热议问题