Я нахожу, что пишу методы с помощью try {stuff} catch (Exception e) {log, other stuff} quit bit, поэтому я пытался выяснить, как сделать атрибут, чтобы помочь мне. Я достаточно подробно рассмотрел следующие темы и не могу заставить свою реализацию работать.
ASP.NET MVC Controller.OnException не вызывается
.net Атрибуты, обрабатывающие исключения - использование в аксессуаре свойств
Мой верхний уровень web.config установлен на
<customErrors mode="On" defaultRedirect="/error.html"/>
и я собираюсь в режиме не-отладки. Мой атрибут ниже:
[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;
}
}
и я называю это здесь -
public class Test : Controller { [SafeWebMethod] public ActionResult Test() { throw new ArgumentException("test"); } }
Кажется, я не могу получить попадание точки останова в атрибуте или изменить код состояния, чтобы он отображался.
Я также скопировал код из атрибута [HandleError] и не могу получить точку останова там, поэтому я думаю, что это что-то не так с моей конфигурацией, но я не могу понять, что.
Любые мысли или идеи будут очень признательны