2016-09-07 12 views
0

IAMのSESSION_START方法でNinjectと依存性注入が、今私は、Global.asaxの私のWebアプリケーションでninject.web拡張子を使用して、Webフォームアプリケーション

のSESSION_START方法に依存しreolving問題は、これが私のGlobal.asaxである必要がありデバッグを経て、私はことを見ても、

public class Global : NinjectHttpApplication 
    { 
     [Inject] 
     IUserManagement um { get; set; } 

     protected void Session_Start(object sender, EventArgs e) 
     { 

      if (WebUser.user != null) 
      {    
      if (HttpContext.Current.Session[ChiaveSessioneUtente] == null) 
      { 
       if (HttpContext.Current != null) 
        HttpContext.Current.Session.Add(ChiaveSessioneUtente, um.ResolveRequestingUser(Request));     
      }  
     } 
     protected override IKernel CreateKernel() 
     { 
      var kernel = new StandardKernel(); 
      RegisterServices(kernel); 
      return kernel; 
     } 
     private void RegisterServices(IKernel kernel) 
     { 
      var modules = new List<INinjectModule> 
      { 
       new BusinessLogicModule(), 
      }; 
      kernel.Load(modules); 
     } 
} 

Ninjectモジュール

public class BusinessLogicModule : NinjectModule 
{ 
    public override void Load() 
    { 
     Bind<IBusinessInquiry>().To<BusinessInquiry>();  
     Bind<IUserManagement>().To<UserManagement>(); 
    } 
} 

しかし、私は、アプリケーションを起動するum、nullであります

ではなく、私のWebフォーム内のすべてのプロパティは問題なく作品を注入されたプロパティが注入されておらず、nullである:は私も NinjectWebCommonでninject.webのnugetパッケージ版をお試し Session_Start

前に実行されますが、結果は同じですので、問題は

+1

私はあなたがサービスロケータを回避するための手立てを、あなたのカーネルを取得していないので、SESSION_START方法 –

+0

内Resolveメソッドを呼び出すコードを追加する必要があります怖いですか?私はちょうど今サービスのロケータの方法を試してみてください、それはうまく動作しますが、きれいではありません... –

+1

私はNinjectの実装に精通していませんが、私はasp.netに関連するいくつかのオブジェクトには、 HttpApplicationはそのリストにあります。これは、すべての扶養家族に注入できるエントリポイントですが、それ自体ではありません。あなたはそれを証明するためにNinjectのソースをチェックしなければならないかもしれません。 –

答えて

-2

は、Global.asaxの

+0

私は彼が財産の注入でこれを達成しようとすれば、彼は財産としても同様にプロパティをマークする必要がありますか? (私はNinjectのデフォルト設定は、プロパティの注入を行うときに非公開のプロパティをバインドするものではないと思う) – adaam

+0

Adaam agry with: –

-1

プロパティセッター・インジェクション

で[ジェクト]属性を削除しようと global.asaxまたは session_Start方法であります

Property Setter Injectionを使用した同じSamuraiクラスの例を次に示します。プロパティを挿入するには、[Inject]で注釈を付ける必要があります。

class Samurai 
{  
    [Inject] 
    public IWeapon Weapon { private get; set; } 

    public void Attack(string target) 
    { 
     this.Weapon.Hit(target); 
    } 
} 
+0

これは私のコードを読んでいるが、session_Startでは単純に機能しないものだ。 –

+0

public property –

関連する問題