HandleError attribute doesn't have any effect
Asked Answered
A

2

7

In my web.config I have included:

<customErrors mode="On" />

Now the yellow screen of death isn't shown anymore. I thought I'd have to include the HandleError attribute to my controller methods or the class itself:

[HandleError]
public ActionResult About()
{
    throw new Exception("Just an exception");
    return View();
}

But it doesn't have any effect, it's the same as:

public ActionResult About()
{
    throw new Exception("Just an exception");
    return View();
}

In both cases the custom error page is shown. So what is it about the HandleError attribute?

Alvardo answered 29/7, 2013 at 6:36 Comment(0)
H
14

That can happen if FilterConfig.cs, under App_Start folder of the MVC project, contains:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new HandleErrorAttribute());
}

Since the HandleError filter is registered when the App starts, you don't have to decorate each controller action with this attribute.

Horsy answered 26/12, 2013 at 21:51 Comment(1)
An excellent and concise explanation which also answers the question: "What is the purpose of RegisterGlobalFilters?"Babs
D
0

See the following article by Scott Gu. It has all the information about the HandleError attribute http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx

Dody answered 29/7, 2013 at 11:50 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.