如何在.NET MVC 3中实现正确的HTTP错误处理?

时间:2012-04-20 12:27:27

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

我在以下post中提到了达林的答案。

我正在使用MVC3,我想知道这是否仍然是一种处理错误的方法?

在rrror控制器中,他有以下内容:

public ActionResult Http404()
{
     Response.StatusCode = 404;

     return Content("404", "text/plain");
}

使用他的代码..我希望它显示完整的URL,我该怎么做?因此,它必须是www.mywebsite.com/Error/Http404,而不仅仅是www.mywebsite.com。我该怎么做?我想如果我有以下代码,那么它将显示完整的URL,但它仍然只显示www.mywebsite.com:

public ActionResult Http404()
{
     Response.StatusCode = 404;

     return View("Http404");
}

如何获取在此页面上显示的global.asax.cs中设置的ex的值?

我放弃了在web.config中处理我的错误,因为它保存在查询字符串中有一个aspxerrorpath。

2 个答案:

答案 0 :(得分:0)

您是否尝试过:http://community.codesmithtools.com/CodeSmith_Community/b/tdupont/archive/2011/03/01/error-handling-and-customerrors-and-mvc3-oh-my.aspx

此示例不会重定向到错误页面,但会一直显示错误发生时请求的URL。我希望它会帮助你。

答案 1 :(得分:0)

因此,根据我的理解,您希望将用户重定向到异常的特定错误页面以及您要访问异常的错误页面。

这是我尝试过的,创建了一个基本控制器并覆盖了OnException方法。在OnException方法中,我正在为Global.asax.cs中尝试的大部分内容做准备。

最重要的是,在处理异常后,我在RedirectAction的{​​{1}}属性中设置了Result

另外,要从错误视图中访问ExceptionContext,我已将异常存储在Exception中。从TempData我将例外ErrorController实例传递给视图。

这是完整的代码。

HandleErrorInfo

更新:这种方法的一个缺点是我们可以处理HTTP异常404,500或其他任何内容,只要它只是从控制器操作中抛出。