HTML-код основан на коде Razor.Я пытаюсь проверить ошибку 404.HTML-код правильный, однако он показывает необработанный HTML-код, когда маршрут не существует.
У меня есть контроллер ошибок, специально предназначенный для обработки всех ошибок 404.
Вот дисплей:
Вот моя конфигурация маршрута:
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));
}
Пожалуйста, помогите!
Заранее спасибо!