我已根据以下两个指南设置了ASP.NET Identity with MySQL Provider:Asp.NET和Codeproject。 我使用EntityFramework和ADO.NET来访问数据库中的其他表,并为此创建一个连接字符串。另一个连接字符串(DefaultConnection)用于Identity。 我有两个不同的数据库 - 一个用于开发,一个用于生产。 Firs在我的本地计算机上,另一个在Amazone服务器上。
这就是我的web.config的样子:
<connectionStrings>
<add name="DefaultConnection" connectionString="Database=[DB_NAME];Data Source=localhost;User Id=root;Password=[DB_PASS]" providerName="MySql.Data.MySqlClient" />
<add name="AdoNetConnection" connectionString="metadata=res://*/HealthModel.csdl|res://*/HealthModel.ssdl|res://*/HealthModel.msl;provider=MySql.Data.MySqlClient;provider connection string="database=[DB_NAME];server=localhost;user id=root;password=[DB_PASS]"" providerName="System.Data.EntityClient" />
Web.Release.config
<connectionStrings>
<add name="DefaultConnection"
connectionString="Database=[DB_NAME];Data Source=[DB_SERVER];User Id=[DB_USER];Password=[DB_PASS]" providerName="MySql.Data.MySqlClient"
xdt:Transform="SetAttributes"
xdt:Locator="Match(name)"/>
<add name="AdoNetConnection"
connectionString="metadata=res://*/HealthModel.csdl|res://*/HealthModel.ssdl|res://*/HealthModel.msl;provider=MySql.Data.MySqlClient;provider connection string="server=[DB_SERVER];user id=[DB_USER];password=[DB_PASS];persistsecurityinfo=True;database=[DB_NAME];" providerName="System.Data.EntityClient"
xdt:Transform="SetAttributes"
xdt:Locator="Match(name)"/>
</connectionStrings>
当我在调试中构建和运行应用程序时,一切都很棒。我可以从数据库访问其他数据表,也可以访问身份数据表以注册新用户。如果表不存在,则会自动创建(迁移)。 但是当我在发布模式下将其发布到Azure时,会出现问题。我仍然可以访问其他数据表,但我无法注册新用户。实际上,注册时一切正常,但用户不会出现在数据库中 - 在表aspnetusers中。虽然它们不在这里,但是甚至没有创建用于Identity的数据表,包括aspnetusers。 正如我所说,我在调试模式和发布模式下的发布数据库中查看开发数据库。
可以请任何人帮我弄明白,哪里有问题?非常感谢你!