En son MVC, Identity, EntityFramework ve resmi Identity sample solution kullanıyorum. . App_Start()
bir veritabanı başlatıcı çalıştırmak için birçok yol vardırApp_Start uygulamasında Identity'nin DbContext'i başlatılıyor ve ekleniyor
, (örneğin (DropCreateDatabaseIfModelChanges
, DropCreateDatabaseAlways
)
Denedim:
AppDbContext.Instance.Database.Initialize(true); // Instance is static builder
Sorun olduğunu Kimlik/Owin, ekmeyle işlev, yönetici nesnelerini OWIN bağlamından (HttpContext.Current.GetOwinContext()
aracılığıyla) çeker, ki bu da, yaşam döngüsünün başlarında bu var olmadığı anlamına gelir.
var userManager = HttpContext.Current.GetOwinContext().GetUserManager<UserManager>();
var roleManager = HttpContext.Current.GetOwinContext().Get<RoleManager>();
Yani olsun:
InvalidOperationException: No owin.Environment item was found in the context.
Owin bağlam düzgün kurulum ve beklendiği gibi çalışır. Sadece bu sorunu alıyorum App_Start
içinde erişmeye çalışırsam.
db'nin App_Start
sürümünde başlatılması kesinlikle gerekli değildir, ancak açık kodları tercih ediyorum ve db'nin oluşturulması/eklenmesi dahil olmak üzere orada çeşitli giriş yordamları istiyorum. Bunu nasıl yaparım?
Bunun yerine bir "UserManager" ve/veya "RoleManager" örneği oluşturamıyor musunuz? –
@BrendanGreen, OWIN'den geçmeden bunu yapamayacağımı bilmiyordu. Benim için çalışan bir cevap eklendi. –