Атрибут C# для окружения с помощью try - catch

Я обнаружил, что пишу методы с помощью try{stuff}catch(Exception e){log, other stuff}, поэтому я пытался выяснить, как сделать атрибут чтобы помочь мне. Я довольно подробно изучил следующие темы и не могу заставить свою реализацию работать.

Атрибут, похоже, вообще не действует

ASP.NET MVC Controller.OnException не вызывается

Атрибуты .net, которые обрабатывают исключения — использование в средстве доступа к свойствам

Мой файл web.config верхнего уровня установлено значение


, и я компилирую в режиме без отладки. Мой атрибут ниже:

    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public class SafeWebMethodAttribute: ActionFilterAttribute, IExceptionFilter
{
    public void OnException(ExceptionContext filterContext)
    {
        filterContext.ThrowIfNull();

        if (filterContext.ExceptionHandled)
        {
            return;
        }
        Log.LogException(filterContext.Exception);
        filterContext.HttpContext.Response.StatusCode = 500;
        filterContext.HttpContext.Response.Write(filterContext.Exception);
        filterContext.ExceptionHandled = true;
    }
}

, и я вызываю его здесь -

тест открытого класса: контроллер
{
 [СейфВебМетод]
публичный тест ActionResult()
 {
бросить новое исключение ArgumentException ("тест");
 }
}

Кажется, я не могу получить точку останова в атрибуте или изменить код состояния, чтобы он отображался.

Я также скопировал код из атрибута [HandleError] и не могу установить там точку останова, поэтому я думаю, что это что-то не так с моей конфигурацией, но я не могу понять, что именно.

Будем очень признательны за любые мысли или идеи

11
задан Community 23 May 2017 в 12:33
поделиться