2016-10-19 5 views
0

У меня есть приложение ASP.NET MVC 5 с Owin.Как ввести объект в Global.asax?

Это мой интерфейс:

using System.Collections.Generic; 

namespace MvcApp.Logging 
{ 
    public interface ILog 
    { 
     void Debug(string format, params object[] args); 
     void Error(string format, params object[] args); 
     void Fatal(string format, params object[] args); 
     void Info(string format, params object[] args); 
     void Trace(string format, params object[] args); 
     void Warn(string format, params object[] args); 

     // custom 
     void Write(LogType type, object properties, string message, params object[] args); 

     bool IsDebugEnabled { get; } 
     bool IsErrorEnabled { get; } 
     bool IsFatalEnabled { get; } 
     bool IsInfoEnabled { get; } 
     bool IsTraceEnabled { get; } 
     bool IsWarnEnabled { get; } 
    } 
} 

Я использую пакет NuGet Autofac.Mvc5.Owin впрыснуть Илог в конструктор контроллера. Такой подход работает отлично.

Owin Startup Класс:

builder.RegisterType<Log>().As<ILog>().InstancePerRequest(); 

Теперь мне нужно вводить интерфейс Илог в класс Global.asax.cs и метод Application_Start.

Возможно ли это? Что мне нужно настроить для инъекции ILog?

public class MvcApplication : HttpApplication 
{ 
    // How to inject ILog here? 

    protected void Application_Start() 
    { 
     // I need write for example this message 
     ILog.Info("Application starting"); 
    } 
} 

Большое спасибо

+0

«старт приложения» -> это где вы делаете инициализации приложения оно такое же, как ваш класс запуска приложений ... – Legends

+0

IMHO, если ваше приложение запросило контекст базы данных, поместите его в 'Application_BeginRequest' или' Application_AuthenticateRequest', так как 'Application_Start' не содержит экземпляр HttpContext. –

ответ

0

Метод Application_Start в Global.asax запускается перед Owin Startup.Configuration. Таким образом, даже если вы найдете способ внедрить интерфейс ILog в метод Application_Start, интерфейс не был бы разрешен в то время.

Вместо использования метода ILog в Application_Start используйте его в методе Owin Startup.Configuration после того, как зависимости были разрешены.

Here's отличный SO вопрос о Global.asax против Owin Startup, который является хорошим чтения

 Смежные вопросы

  • Нет связанных вопросов^_^