Как реализовать пользовательские страницы ошибок с пониманием приложения
Недавно я реализовал Application Insights в своем приложении MVC C#. Мне удалось подтвердить ведение журнала, включая сообщения об ошибках, например 404. Я обновил свою веб-конфигурацию, чтобы использовать настраиваемую страницу ошибок вместо уродливого значения по умолчанию. Однако ошибки больше не регистрируются в Application Insights - только тот факт, что была вызвана страница с ошибкой.
Я предполагаю, что у меня есть два варианта.
1) Я отключил пользовательскую конфигурацию ошибок и установил точку останова в файле AiHandleErrorAttribute.cs, который автоматически добавлялся при добавлении Application Insights. Я надеялся перенаправить на свою страницу ошибки после исключения, но точка останова не была достигнута.
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class AiHandleErrorAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
if (filterContext != null && filterContext.HttpContext != null && filterContext.Exception != null)
{
//If customError is Off, then AI HTTPModule will report the exception
if (filterContext.HttpContext.IsCustomErrorEnabled)
{
var ai = new TelemetryClient();
ai.TrackException(filterContext.Exception);
//redirect to error page - never gets called
}
}
base.OnException(filterContext);
}
}
2) Вызовите Application Insights из моего контроллера для страницы обработки ошибок, однако, нет ошибок (по крайней мере, что я могу сказать), как только я попаду / перенаправлюсь на мою страницу обработки ошибок.
public class ErrorHandlerController : Controller
{
// GET: ErrorHandler
public ActionResult Index()
{
var ai = new TelemetryClient();
ai.TrackException(can't find exception at this point);
return View();
}
}
0 ответов
Вы можете сделать это:
var exceptionHandlerPathFeature = HttpContext.Features.Get<IExceptionHandlerPathFeature>();
ai.TrackException(exceptionHandlerPathFeature.Error);