すべての例外をインターセプトしようとしていますが、コードは実行されません。これを に入れてみGlobalFilters
ました。また、メソッドに直接入れてみました。
私の属性:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
public class HandleExceptionAttribute : HandleErrorAttribute
{
private ILog log = LogManager.GetLogger(typeof(HandleExceptionAttribute));
public override void OnException(ExceptionContext filterContext)
{
log.Info("inside on exception"); // this never appears
}
}
私のクラス:
public class Tester
{
[HandleException]
public void Except()
{
var asd = 0;
var qwe = 1 / asd;
}
}
ゼロで除算すると例外が発生し、デバッガーがそれをキャッチして続行しますが、ログ ファイルには何も書き込まれません。
ロガーは動作します。その他のログはファイルに表示されます。デバッグを無効にしても、ログ ファイルは読み取られないため、デバッガーのせいではありません。
これを IIS Express で実行します。Windows 7。
編集:
ものをコントローラーに移動しました。まだ動作していません
public class UserController : ApiController
{
private ILog log = LogManager.GetLogger(typeof(UserController));
[HandleException]
[CheckModelForNull]
[ValidateModelState]
public object Post([FromBody]User user)
{
var asd = 0;
var qwe = 1 / asd;
return new HttpStatusCodeResult(HttpStatusCode.OK);
}
}