protected void Application_Error(object sender, EventArgs e)
        {
            var exception = Server.GetLastError();

            // Process 404 HTTP errors
            var httpException = exception as HttpException;

            if (httpException != null && httpException.GetHttpCode() == 404)
            {
                Response.Clear();
                Server.ClearError();
                Response.TrySkipIisCustomErrors = true;

                IController controller = new PageNotFoundController();

                var routeData = new RouteData();
                routeData.Values.Add("controller", "PageNotFound");
                routeData.Values.Add("action", "Index");

                var requestContext = new RequestContext(
                    new HttpContextWrapper(Context), routeData);
                controller.Execute(requestContext);
            }
        }