How to Achive Error Handling in ASP.NET MVC

Total Post:135


 1341  View(s)
Rate this:

How can I correctly handle exceptions thrown from controllers in ASP.NET MVC? The HandleErrorattribute seems to only process exceptions thrown by the MVC infrastructure and not exceptions thrown by my own code.

Using this web.config

<customErrors mode="On">
    <error statusCode="401" redirect="/Errors/Http401" />
with the following code
namespace MvcApplication1.Controllers
    public class HomeController : Controller
        public ActionResult Index()
            // Force a 401 exception for testing
            throw new HttpException(401, "Unauthorized");

doesn't result in what I was hoping for. Instead I get the generic ASP.NET error page telling me to modify my web.config to see the actual error information. However, if instead of throwing an exception I return an invalid View, I get the /Shared/Views/Error.aspx page:

return View("DoesNotExist");

Throwing exceptions within a controller like I've done above seems to bypass all of the HandleErrorfunctionality, so what's the right way to create error pages and how do I play nice with the MVC infrastructure?

  1. Re: How to Achive Error Handling in ASP.NET MVC

    Thanks to kazimanzurrashaid, here is what I wound up doing in Global.asax.cs:

    protected void Application_Error()
        Exception unhandledException = Server.GetLastError();
        HttpException httpException = unhandledException as HttpException;
        if (httpException == null)
            Exception innerException = unhandledException.InnerException;
            httpException = innerException as HttpException;
        if (httpException != null)
            int httpCode = httpException.GetHttpCode();
            switch (httpCode)
                case (int) HttpStatusCode.Unauthorized:

    I'll be able to add more pages to the HttpContoller based on any additional HTTP error codes I need to support.

      Modified On Apr-07-2018 12:27:13 AM


Please check, If you want to make this post sponsored

You are not a Sponsored Member. Click Here to Subscribe the Membership.