如何在 Azure 中发布支持身份(个人用户帐户)的 MVC 应用程序?
How published in Azure my MVC App with support for Identity (Individual User Accounts)?
我正在开发一个支持 'Individual User Accounts' 的 MVC 应用程序。我的本地应用程序运行正常。
它正确生成数据库,我的代码...
IdentityModels.cs
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
Database.SetInitializer<ApplicationDbContext>(new InitTaxiMetroUserDb());
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
public class InitTaxiMetroUserDb : CreateDatabaseIfNotExists<ApplicationDbContext>
{
protected override void Seed(ApplicationDbContext context)
{
context.Configuration.LazyLoadingEnabled = true;
if (context.Users.Any(u => u.UserName == "admin"))
return;
var store = new UserStore<ApplicationUser>(context);
var userManager = new UserManager<ApplicationUser>(store);
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
if (!roleManager.RoleExists("Administrador"))
roleManager.Create(new IdentityRole("Administrador"));
if (!roleManager.RoleExists("Flota"))
roleManager.Create(new IdentityRole("Flota"));
if (!roleManager.RoleExists("Gestor"))
roleManager.Create(new IdentityRole("Gestor"));
if (!roleManager.RoleExists("Conductor"))
roleManager.Create(new IdentityRole("Conductor"));
var user = new ApplicationUser { UserName = "admin" };
var result = userManager.Create(user, "123456");
if (result.Succeeded)
userManager.AddToRole(user.Id, "Administrador");
user = new ApplicationUser { UserName = "xxxxx@gmail.com" };
result = userManager.Create(user, "123456");
if (result.Succeeded)
userManager.AddToRole(user.Id, "Gestor");
user = new ApplicationUser { UserName = "yyyyy@yahoo.es" };
result = userManager.Create(user, "123456");
if (result.Succeeded)
userManager.AddToRole(user.Id, "Conductor");
base.Seed(context);
}
}
Web.config
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=TaxiMetroUserDb;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\TaxiMetroUserDb.mdf" providerName="System.Data.SqlClient" />
问题是当我想在 Azure 上发布这个应用程序时:没有生成我无法执行身份验证的数据库。 Azure 中不存在数据库,它不会生成,为什么??
我应该怎么做?
使用迁移? ...我该怎么做
如果您正面临在 Azure 上部署数据库的问题,请查看本文并按照包含有关在 Azure 上发布本地数据库的详细信息的步骤进行操作
http://www.asp.net/mvc/overview/getting-started/database-first-development/publish-to-azure
在 azure 的发布向导中,您是否做过如下操作
我在 Azure 上手动创建了我的数据库,然后在发布操作期间使用 web.config 转换选项修改数据库连接字符串。
我正在开发一个支持 'Individual User Accounts' 的 MVC 应用程序。我的本地应用程序运行正常。 它正确生成数据库,我的代码...
IdentityModels.cs
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
Database.SetInitializer<ApplicationDbContext>(new InitTaxiMetroUserDb());
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
public class InitTaxiMetroUserDb : CreateDatabaseIfNotExists<ApplicationDbContext>
{
protected override void Seed(ApplicationDbContext context)
{
context.Configuration.LazyLoadingEnabled = true;
if (context.Users.Any(u => u.UserName == "admin"))
return;
var store = new UserStore<ApplicationUser>(context);
var userManager = new UserManager<ApplicationUser>(store);
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
if (!roleManager.RoleExists("Administrador"))
roleManager.Create(new IdentityRole("Administrador"));
if (!roleManager.RoleExists("Flota"))
roleManager.Create(new IdentityRole("Flota"));
if (!roleManager.RoleExists("Gestor"))
roleManager.Create(new IdentityRole("Gestor"));
if (!roleManager.RoleExists("Conductor"))
roleManager.Create(new IdentityRole("Conductor"));
var user = new ApplicationUser { UserName = "admin" };
var result = userManager.Create(user, "123456");
if (result.Succeeded)
userManager.AddToRole(user.Id, "Administrador");
user = new ApplicationUser { UserName = "xxxxx@gmail.com" };
result = userManager.Create(user, "123456");
if (result.Succeeded)
userManager.AddToRole(user.Id, "Gestor");
user = new ApplicationUser { UserName = "yyyyy@yahoo.es" };
result = userManager.Create(user, "123456");
if (result.Succeeded)
userManager.AddToRole(user.Id, "Conductor");
base.Seed(context);
}
}
Web.config
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=TaxiMetroUserDb;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\TaxiMetroUserDb.mdf" providerName="System.Data.SqlClient" />
问题是当我想在 Azure 上发布这个应用程序时:没有生成我无法执行身份验证的数据库。 Azure 中不存在数据库,它不会生成,为什么??
我应该怎么做?
使用迁移? ...我该怎么做
如果您正面临在 Azure 上部署数据库的问题,请查看本文并按照包含有关在 Azure 上发布本地数据库的详细信息的步骤进行操作
http://www.asp.net/mvc/overview/getting-started/database-first-development/publish-to-azure
在 azure 的发布向导中,您是否做过如下操作
我在 Azure 上手动创建了我的数据库,然后在发布操作期间使用 web.config 转换选项修改数据库连接字符串。