Как реализовать пользовательские страницы ошибок с пониманием приложения

Недавно я реализовал 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);
Другие вопросы по тегам