我正在使用Web Api并且正在尝试创建一个全局异常处理程序。
我已经创建了以下处理程序,但是它没有捕获一些例外。我在Handle
方法中设置了一个断点并且它甚至没有被调用。我猜测Web API中的某些内容是首先捕获异常。
例如,创建了以下内容。我想捕获这个异常,以便我可以以我的API的其余部分所遵循的格式返回它:
{
"Message": "The request is invalid.",
"MessageDetail": "The parameters dictionary contains a null entry for parameter 'personId' of non-nullable type 'System.Int32' for method 'System.Web.Http.IHttpActionResult GetPersonById(System.String, Int32)' in 'Pasco.Middleware.WebApi.Controllers.PersonController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter."
}
我的Global.asax
:
GlobalConfiguration.Configuration.Services.Replace(typeof(IExceptionHandler), new WebApiCoreExceptionHandler());
我的处理程序(剪辑):
public class WebApiCoreExceptionHandler : ExceptionHandler
{
private static ILog logger = LogManager.GetLogger(typeof(WebApiCoreExceptionHandler));
public override void Handle(ExceptionHandlerContext context)
我错过了什么?