I를 글로벌 예외 핸들러 클래스 내 예외 처리하기 위해 :글로벌 예외 처리기가 오류를 처리하지 (웹 API)
namespace MyProject.Extensions
{
public class MyExceptionHandler : ExceptionHandler
{
public override void Handle(ExceptionHandlerContext context)
{
context.Result = new MyErrorResult
{
Request = context.ExceptionContext.Request,
ContextException = context.Exception
};
}
}
private class MyErrorResult : IHttpActionResult
{
public HttpRequestMessage Request { get; set; }
public Exception ContextException { get; set; }
public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
HttpResponseMessage response = MyErrorResponse(Request, ContextException);
response.RequestMessage = Request;
return Task.FromResult(response);
}
}
}
을 그리고의 Global.asax에 등록 :
protected void Application_Start()
{
ConfigureLog4Net();
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
DependencyConfig.RegisterDependencies(GlobalConfiguration.Configuration);
GlobalConfiguration.Configuration.EnsureInitialized();
}
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Services.Replace(typeof(IExceptionHandler), new MyExceptionHandler());
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}",
defaults: new { action = RouteParameter.Optional }
);
}
}
및 내 컨트롤러 중 하나에서 테스트 예외를 throw하면 Visual Studio가 중지되고 '예외 처리되지 않음'오류가 발생합니다. 내가 도대체 뭘 잘못하고있는 겁니까? 어떤 도움이라도 대단히 감사 할 것입니다.
처리기에 중단 점을 설정 한 다음 첫 번째 예외에서 VS가 중지되면 "계속"을 클릭하면 어떻게됩니까? 오류 처리기가 있습니까? –
정확히 무엇을 얻습니까? –