c# Castle windsor web api Application_Error не работает - PullRequest
0 голосов
/ 18 марта 2020

Я хочу регистрировать все исключения в проекте, кроме 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);
    } 

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...