2016-10-19 15 views
0

私はOwinとASP.NET MVC 5アプリケーションを持っています。私は、コントローラのコンストラクタにのILogを注入するnugetパッケージAutofac.Mvc5.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; } 
    } 
} 

は、これが私のインタフェースです。このアプローチは完全に機能します。

Owin起動クラス:

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

Global.asaxの中Application_StartメソッドはOwin Startup.Configuration前に実行されます。 したがって、ILOGインターフェイスをApplication_Startメソッドに注入する方法が見つかったとしても、インターフェイスはその時点で解決されませんでした。

Application_StartメソッドでILogを使用する代わりに、依存関係が解決された後にOwin Startup.ConfigurationメソッドでILogを使用します。

Here's良いですOwinスタートアップ対のGlobal.asaxについての素晴らしいSOの質問は

関連する問題