Я хочу регистрировать все исключения в проекте, кроме BussinesExceptions.
В своем проекте веб-API я использую Castle Windsor и отдельные контроллеры для каждого проекта.
Я использую CastleControllerActivator для создания контроллеров
public class CastleControllerActivator : IHttpControllerActivator
{
private readonly IWindsorContainer _container;
public static readonly Logger Logger = LogManager.GetCurrentClassLogger();
public CastleControllerActivator(WindsorContainer container)
{
_container = container;
}
public IHttpController Create(HttpRequestMessage request,
HttpControllerDescriptor controllerDescriptor, Type controllerType)
{
try
{
var controller = (IHttpController)_container.Resolve(controllerType);
request.RegisterForDispose(
new Release(
() => this._container.Release(controller)));
return controller;
}
catch (Exception ex)
{
Logger.Error(ex);
throw ex;
}
}
private class Release : IDisposable
{
private readonly Action _release;
public Release(Action release)
{
this._release = release;
}
public void Dispose()
{
this._release();
}
}
}
Когда выдается исключение в контроллерах, я не могу обработать ошибки в Application_Error
- Я пытаюсь использовать NLog для исключения журнала
, это мой Global.asax .cs
public class WebApiApplication : HttpApplication
{
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
var container = BootstrapContainer.WireUp();
GlobalConfiguration
.Configuration
.Services
.Replace(typeof(IHttpControllerActivator)
, new CastleControllerActivator(container));
}
protected void Application_Error()
{
var ex = Server.GetLastError();
Logger.Error(ex);
}
}