Я обнаружил, что пишу методы с помощью 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] и не могу установить там точку останова, поэтому я думаю, что это что-то не так с моей конфигурацией, но я не могу понять, что именно.
Будем очень признательны за любые мысли или идеи