" ConnectionString属性尚未初始化。" - 但仅限于发布时

时间:2014-04-15 14:44:32

标签: asp.net-mvc entity-framework asp.net-mvc-5 entity-framework-6.1

我有一个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),这就是“设置”屏幕:

enter image description here

知道发生了什么事吗?

更新

如果不选择ApplicationDbContext而选择DefaultConnection,则可行,但我将无法使用代码优先迁移。如何让ApplicationDBContext重新开始工作?

enter image description here

2 个答案:

答案 0 :(得分:20)

对于遇到此问题的其他人 - 我找到了解决方案。

我刚刚通过Nuget将 ASP Identity 升级到版本2.0.0,当它安装 Microsoft.AspNet.Identity.EntityFramework 包时,它更改了我的发布设置和将AppliationDbContextDefaultConnectionString分开,这就是导致问题的原因。

我必须要做的就是将以下内容更改为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)

我只是取消了“执行代码首次迁移”它的工作原理。