2014-10-10 62 views
3

我掙扎在使用StructureMap和微軟ASPNET身份在一起,我似乎無法弄清楚如何獲得IAuthenticationManager的實現映射映射IAuthenticationManager實現。我試圖在下面的例子中明確地將這個映射到DefaultRegistry中。如何讓StructureMap

public class DefaultRegistry : Registry { 

     public DefaultRegistry() { 
      Scan(
       scan => { 
        scan.TheCallingAssembly(); 
        scan.WithDefaultConventions(); 
        scan.With(new ControllerConvention()); 
       }); 

      For<IAuthenticationManager>().Use(() => HttpContext.Current.GetOwinContext().Authentication); 
     } 
    } 

的主要問題是,HttpContext.Current總是空,但我什至不知道這會工作,即使不爲null。我是一個有StructureMap和AspNet Identity的新手,所以隨時可以給我打電話,讓我知道我在這裏做的任何傻事。謝謝你的幫助!

回答

0

那麼它似乎像上面的代碼工作得很好,我不知道爲什麼它似乎並沒有被之前的工作。我不知道什麼是協議來解決這個問題,但我不希望任何人認爲他們不能使用上述參考,因爲它的工作原理。

0

這實際上並不是一個StructureMap問題。 HttpContext.Current只能在ASP.Net中的HTTP請求中使用。如果你想在StructureMap中使用HttpContext,我會建議要麼確保你正常地檢查null,要麼嘗試切換到使用HttpContextWrapper/HttpContextBase抽象,這樣你就可以在你的測試中運行ASP.Net以外的代碼。