在自定义错误处理之前获取原始请求的URL在ASP.NET MVC4中重定向

时间:2016-05-26 10:39:10

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我在ASP.NET MVC4中使用自定义错误处理,以便在捕获404状态时重定向到自定义错误页面。

代码如下

的Web.Config

<customErrors mode="On">
  <error statusCode="404" redirect="~/Error/NotFoundError"/>   
</customErrors>

错误控制器

    public ActionResult NotFoundError()
    {
        string originalUrl = Request.Url.AbsolutePath;

        Errormodel model = new Errormodel();
        model.URL = originalUrl ;

        return View(model);
    }

请注意,我在Request对象上使用Request.Url.AbsolutePath属性来获取URL。

问题是我想在重定向之前获取我定位的原始网址,以便在我的视图中显示它,而是我将网址发送到自定义错误页面。

视图中的示例

  

您请求找不到的http://testproject/test

如何获取原始目标网址而不是新的自定义错误网页网址?

1 个答案:

答案 0 :(得分:0)

您可以查看此答案 ASP.NET MVC 404 Error Handling

基本上它使用函数Application_EndRequest事件在转到新操作之前添加任何信息

public class MvcApplication : HttpApplication
{
    protected void Application_EndRequest()
    {
        if (Context.Response.StatusCode == 404)
        {
            Response.Clear();

            var rd = new RouteData();
            rd.DataTokens["area"] = "AreaName"; // In case controller is in another area
            rd.Values["controller"] = "Errors";
            rd.Values["action"] = "NotFound";

            IController c = new ErrorsController();
            c.Execute(new RequestContext(new HttpContextWrapper(Context), rd));
        }
    }
}