2015-12-18 30 views
1

當我嘗試使用Asp.Net Identity RoleStore並使用StructureMap作爲DI容器時,UserStore工作正常,但是RoleStore在編譯時拋出錯誤。RoleStore拋出錯誤的結構圖

//works fine 
cfg.For<IUserStore<ApplicationUser>>().Use<UserStore<ApplicationUser>>(); 

//does NOT work 
cfg.For<IRoleStore<IdentityRole>>().Use<RoleStore<IdentityRole>>(); 

引發以下錯誤

類型 「Microsoft.AspNet.Identity.EntityFramework.RoleStore」 不能在一般類型被用作類型參數「TConcreteType」 或方法 ' StructureMap.Configuration.DSL.Expressions.CreatePluginFamilyExpression.Use()」。 沒有從 'Microsoft.AspNet.Identity.EntityFramework.RoleStore' 到 'Microsoft.AspNet.Identity.IRoleStore'的隱含參考轉換。

回答

3

因爲RoleStore<TRole>沒有從IRoleStore<TRole>執行。其實它從IRoleStore<TRole, TKey>實施。因此請試試這個:

cfg.For<IRoleStore<IdentityRole,string>>().Use<RoleStore<IdentityRole>>();