I am having problems using the [HandleError] attribute on my Controller Actions - it doesn't seem to work at all (i.e. it doesn't matter if the filter is there or not - I get the same results...). When an Exception is thrown, I get the standard red-toned Server Error in '/' Application error page instead of my custom view.
I have found a couple of other threads on the subject here on SO, and in most cases it seems that setting the customErrors option to On in web.config solved the problem. It has not for me, so I need to find a different solution.
My controller action:
[HandleError]
public ActionResult Index()
{
throw new Exception("oops...");
return View();
}
In my web.config file
<customErrors mode="On"></customErrors>
I have made sure that the Error.aspx file is in the Shared directory, too. What am I missing?
I am running ASP.NET MVC RC Refresh.
You need to specify what page to redirect to as well.
<customErrors mode="On" defaultRedirect="Error.aspx" />
EDIT: Sorry the /Shared/ part should not bet there but you need to tell MVC which page to send the user to with Error.aspx. Then the default route looks for something called Error.aspx in shared.
It was very late! :) I guess that's why someone gave me a minus for the answer! :) At least it works here mate!
Two useful things to know:
By default, HandleError
does nothing when running under the development server. The intention is to show developers more useful information:
public virtual void OnException(ExceptionContext filterContext) {
if (filterContext == null) {
throw new ArgumentNullException("filterContext");
}
// If custom errors are disabled, we need to let the normal ASP.NET
// exception handler execute so that the user can see useful
// debugging information.
if (filterContext.ExceptionHandled
|| ! filterContext.HttpContext.IsCustomErrorEnabled) {
return;
}
Note that this case is precisely what customError
is supposed to control. If setting customError="On"
does not change this behavior:
Web.config
in the project root, not the one in Views.HttpContext.IsCustomErrorEnabled
.Web.config
Second, there certain types of errors which HandleError
will never handle, notably ASP.NET compilation errors. You don't say which error you're encountering.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With