我有一个MVC5 / EF6.1网站,可以在我的开发机器上使用LocalDb完美运行。
但是,当我使用Azure SQL数据库将其发布到Azure网站时,在进行任何数据库交互时出现以下错误:
The ConnectionString property has not been initialized.
我全身都搜索过,无法找到Azure上发生这种情况的原因。
堆栈跟踪指向的第一个文件是 IdentityModels.cs:45
包含以下内容:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext() : base("DefaultConnection")
{
}
}
当我发布到Azure时,我已经测试了连接字符串(返回OK),这就是“设置”屏幕:
知道发生了什么事吗?
更新
如果不选择ApplicationDbContext
而选择DefaultConnection
,则可行,但我将无法使用代码优先迁移。如何让ApplicationDBContext
重新开始工作?
答案 0 :(得分:20)
对于遇到此问题的其他人 - 我找到了解决方案。
我刚刚通过Nuget将 ASP Identity 升级到版本2.0.0,当它安装 Microsoft.AspNet.Identity.EntityFramework 包时,它更改了我的发布设置和将AppliationDbContext
和DefaultConnectionString
分开,这就是导致问题的原因。
我必须要做的就是将以下内容更改为ApplicationDbContext
ASP Identity 1.0.0
public ApplicationDbContext() : base("DefaultConnection")
{
}
ASP Identity 2.0.0
// Set the throwIfV1Schema to false...
public ApplicationDbContext() : base("DefaultConnection", throwIfV1Schema: false)
{
}
我不知道为什么这对我的本地开发版本没有影响,但它解决了我的问题。希望这有助于某人!
答案 1 :(得分:-1)
我只是取消了“执行代码首次迁移”它的工作原理。