How can we handle 404 in ASP.NET MVC?

How can we handle 404 in ASP.NET MVC?

 

First Install ILogger from nuget package :

 

protected void Application_Error(object sender, EventArgs e)

    {

        Exception exception = Server.GetLastError();

        // Log the exception.

 

        ILogger logger = Container.Resolve<ILogger>();

        logger.Error(exception);

 

        Response.Clear();

 

        HttpException httpException = exception as HttpException;

 

        RouteData routeData = new RouteData();

        routeData.Values.Add("controller", "Error");

 

        if (httpException == null)

        {

            routeData.Values.Add("action", "Index");

        }

        else //It's an Http Exception, Let's handle it.

        {

            switch (httpException.GetHttpCode())

            {

                case 404:

                    // Page not found.

                    routeData.Values.Add("action", "HttpError404");

                    break;

                case 500:

                    // Server error.

                    routeData.Values.Add("action", "HttpError500");

                    break;

 

                // Here you can handle Views to other error codes.

                // I choose a General error template  

                default:

                    routeData.Values.Add("action", "General");

                    break;

            }

        }

 

        // Pass exception details to the target error View.

        routeData.Values.Add("error", exception);

 

        // Clear the error on server.

        Server.ClearError();

 

        // Avoid IIS7 getting in the middle

        Response.TrySkipIisCustomErrors = true;

 

        // Call target Controller and pass the routeData.

        IController errorController = new ErrorController();

        errorController.Execute(new RequestContext(

             new HttpContextWrapper(Context), routeData));

    }

 

(Visited 11 times, 1 visits today)

Leave a Reply

Your email address will not be published. Required fields are marked *