ASP.NET MVC 5: необработанный текст HTML будет отображаться, когда маршрут не определен - PullRequest
0 голосов
/ 08 июля 2019

HTML-код основан на коде Razor.Я пытаюсь проверить ошибку 404.HTML-код правильный, однако он показывает необработанный HTML-код, когда маршрут не существует.

У меня есть контроллер ошибок, специально предназначенный для обработки всех ошибок 404.

Вот дисплей: enter image description here

Вот моя конфигурация маршрута:

public static class RouteConfig
    {
       public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "404-NotFound",
                url: "NotFound",
                defaults: new { controller = "ErrorCode", action = "Index" }
            );

            routes.MapRoute(
                name: "Error",
                url: "{*url}",
                defaults: new { controller = "ErrorCode", action = "Index" }
                );

        }
    }

Я проверил маршрут NotFound .HTML отображается правильно (on / NotFound).Я понятия не имею, почему необработанный текст HTML будет отображаться, когда маршрут не определен.

Дополнительная информация: Это файл global.asax.Я реализовал обработку ошибок в этом методе.Я считаю, что проблема здесь.

protected void Application_Error(object sender, EventArgs args)
    {
        HttpContext context = ((HttpApplication)sender).Context;
        Exception ex = Server.GetLastError();

        //Clears all content from the buffer stream
        context.ClearError();            

        // Request info
        string employerId = Session["EmployerId"]?.ToString() ?? string.Empty;
        //ErrorViewModel errorViewModel = WcbHttpUtility.ParseError(new HttpRequestWrapper(context.Request), employerId, ex);
        string errorMessage = $"Employer ID: {employerId} has error {ex.Message}";
        ErrorViewModel errorViewModel = new ErrorViewModel { ErrorMessage = errorMessage };
        WcbReportApp.WebInstance().ReportTelemetryLog.TrackException(ex, nameof(Application_Error));

        // Clear the error from the server
        Server.ClearError();
        //Response.Redirect($"~/ErrorCode/Index/");

        var routeData = new RouteData();            
        routeData.Values.Add("Controller", "ErrorCode");
        routeData.Values.Add("Action", "Index");
        routeData.Values.Add("Model", errorViewModel);

        var errorCodeController = new ErrorCodeController();
        IController controller = errorCodeController;
        errorCodeController.ControllerContext = new ControllerContext { RouteData = routeData };
        controller.Execute(new RequestContext(new HttpContextWrapper(context), routeData));


    }

Пожалуйста, помогите!

Заранее спасибо!

...