2016-08-10 13 views

答えて

3

Application_Startは、アプリケーションが起動している間に一度と呼ばれ、autofacコンテナは、ここで1 Requestに基づいてサービスを登録したくない、グローバルなアプリケーションのために構築されています。

サービスを名前付きサービスとして登録し、クッキー値に基づいて正しい名前付き登録を解決する3番目の登録を追加することができます。つまり:

builder.RegisterType<FirstService>().Named<IService>("first").InstancePerRequest(); 
builder.RegisterType<SecondService>().Named<IService>("second").InstancePerRequest(); 


builder.Register(c => { 
    var myCookie = HttpContext.Current.Request.Cookies["MyTestCookie"]; 

    if (myCookie != null) 
     return c.ResolveNamed<IService>("first"); 
    else 
     return c.ResolveNamed<IService>("second"); 
}).InstancePerRequest(); 
+0

私は要求ごとに解決する必要があり、もちろん私のアプローチは全く間違っていることに気付きました。シリル、大きな感謝!それはうまく動作します。 – serg

関連する問題