Azure的.NET核心数据库连接错误

时间:2018-05-08 17:48:18

标签: c# azure asp.net-core azure-sql-database

在本地,我的代码运行正常。但是,当我尝试发布到Azure时,我收到以下错误:

'One or more errors occurred. (Maximum number of retries (5) exceeded while executing database operations with 'SqlServerRetryingExecutionStrategy'. See inner exception for the most recent failure.)'

错误发生在我的Startup.cs文件的以下行中,用于为管理员用户设定种子:

ApplicationIdentityDbContext.CreateAdminAccount(app.ApplicationServices, Configuration).Wait();

这会调用静态方法:

public static async Task CreateAdminAccount(IServiceProvider serviceProvider, IConfiguration configuration)
        {
            UserManager<AppUser> userManager = serviceProvider.GetRequiredService<UserManager<AppUser>>();
            RoleManager<IdentityRole> roleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();

            string username = configuration["Data:AdminUser:Name"];
            string email = configuration["Data:AdminUser:Email"];
            string password = configuration["Data:AdminUser:Password"];
            string role = configuration["Data:AdminUser:Role"];

            if (await userManager.FindByEmailAsync(email) == null)
            {
                if(await roleManager.FindByNameAsync(role) == null)
                {
                    await roleManager.CreateAsync(new IdentityRole(role));
                }

                AppUser user = new AppUser
                {
                    UserName = username,
                    Email = email
                };

                IdentityResult result = await userManager.CreateAsync(user, password);
                if (result.Succeeded)
                {
                    await userManager.AddToRoleAsync(user, role);
                }
            }
        }

NameEmailPasswordRole属性位于我的appSettings.json文件中,似乎设置正确。我已经检查了我的连接字符串和防火墙设置,一切似乎都没问题。

如果我注释掉导致错误的行,发布,然后尝试从网站注册数据库中的用户,我收到以下错误:

SqlException: Invalid object name 'AspNetUsers'.

我正在使用Identity来管理用户,而以前的应用程序会创建必要的表,如果它们不存在的话。这些应用程序不是.NET核心应用程序,但是......将.NET核心应用程序发布到Azure的策略根本不同吗?

0 个答案:

没有答案