I'm trying to implement exception handling in ASP.NET MVC3 using the HandleError attribute.
The code that I'm using looks like this:
[HandleError(Order = 1, ExceptionType = typeof(SocketsOfflineException), View="EndSystemDownError")]
This works as expected when the EndSystemDownError view is located in the "Shared" folder. However, I have a number of Error views, and I want to separate them out into a folder specifically for Errors, called "Error".
So I pull the EndSystemDownError view out of the shared folder and into an "Error" subfolder in the Views folder. I then update the View property to ~/Views/Error/EndSystemDownError
. This however results in an exception stating that the view was not found. I tried /Views/Error/EndSystemDownError
as well, with the same results.
I have tried adding an ErrorController
with an EndSystemDownError
action, both as a troubleshooting measure, and because I would like to add some controller functionality to the view. This has no effect.
I can't seem to figure out what I'm doing wrong. Perhaps this is a bug in MVC, or maybe it doesn't support error views outside of the Shared folder, which would be disappointing.
If you put your errors subfolder inside of the shared folder, you can refer to it by Errors/whatevererror.aspx and it should be fine.
I do this frequently. After all they are shared views. :)
AFAIK you cannot modify the location of those views. They should be in ~/Views/Shared
. You could specify the name though per exception type:
[HandleError(
Order = 1,
ExceptionType = typeof(SocketsOfflineException),
View = "EndSystemDownError"
)]
where the EndSystemDownError
view is located in ~/Views/Shared/EndSystemDownError.aspx
.
did you try
[HandleError(Order = 1, ExceptionType = typeof(SocketsOfflineException), View="Error/EndSystemDownError")]
Side note for Orchard module programming:
The HandleError
attribute won't work in Orchard modules as Orchard implements a custom filter handling itself.
You need to implement a FilterProvider
that overrides the OnResultExecuted()
to catch exceptions thrown in a view.
See src\Orchard\Exceptions\Filters\UnhandledExceptionFilter.cs
, it implements the common Orchard error page.
来源:https://stackoverflow.com/questions/5071903/asp-net-mvc-handleerror-view-not-found