我正在尝试使用默认的MVC6模板升级Asp.Net Identity 2'自定义存储提供程序'以使用Visual Studio 2015中的Identity 3 beta 4。
我在学习如何使用ASP5中间件注册Asp.Net Identity 3自定义存储提供程序时遇到了困难。
目前我已完成以下操作,但不确定是否正确:
services.AddIdentity()
.AddRoleStore>()
.AddUserStore>()
.AddDefaultTokenProviders();
我不确定我是如何注册数据库上下文的?
在我的项目中称为MySQLDatabase.cs
我找不到任何文件。
注册Identity.EntityFramework中间件似乎与自定义存储提供程序的方式不同。
运行默认MVC6模板并点击“注册”按钮时收到以下错误:
“InvalidOperationException:尝试激活'Bondii.Identity.MySQL.UserStore`1 [Bondii.Identity.MySQL.IdentityUser]'时,无法解析类型'Bondii.Identity.MySQL.MySQLDatabase'的服务。”
我的代码包括完整项目:
GitHub存储库看我的代码是: https://github.com/simonpbond/bondii.identity.mysql
基于身份2的原始'自定义存储提供程序教程 - 我正在尝试升级到Identity 3: http://www.asp.net/identity/overview/extensibility/implementing-a-custom-mysql-aspnet-identity-storage-provider
原始示例代码: https://aspnet.codeplex.com/SourceControl/latest#Samples/Identity/AspNet.Identity.MySQL/
答案 0 :(得分:0)
在你的startup.css中你需要这样的东西:
services.AddTransient(_ => new MySQLDatabase());
在:
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddRoleStore<MySQL.RoleStore<IdentityRole>>()
.AddUserStore<MySQL.UserStore<IdentityUser>>()
.AddDefaultTokenProviders();
这将为您提供我相信的每个请求的数据库连接,并将由DI传递给您的商店的构造函数。
这可能不是最好的方法,将某种工厂作为单身人士传递可能会更好,但这应该按照你设置的方式工作。