【问题标题】:"The ConnectionString property has not been initialized." - but only when publishing“ConnectionString 属性尚未初始化。” - 但仅在发布时
【发布时间】:2014-04-15 14:44:32
【问题描述】:

我有一个使用 LocalDb 在我的开发机器上完美运行的 MVC5 / EF6.1 网站。

但是,当我将其发布到带有 Azure SQL 数据库的 Azure 网站时,在进行任何数据库交互时都会收到以下错误:

The ConnectionString property has not been initialized.

我已经搜索了所有内容,但找不到在 Azure 上发生这种情况的原因。

堆栈跟踪指向的第一个文件是 IdentityModels.cs:45

包含以下内容:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext() : base("DefaultConnection")
    {

    }
}

当我发布到 Azure 时,我已经测试了连接字符串(返回正常),这是设置屏幕:

知道发生了什么吗?

更新:

如果不选择 ApplicationDbContext 而是选择 DefaultConnection 它可以工作,但是我将无法使用代码优先迁移。我怎样才能让ApplicationDBContext 再次工作?

【问题讨论】:

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


    【解决方案1】:

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

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

    我所要做的就是将以下内容更改为我的ApplicationDbContext

    ASP 身份 1.0.0

    public ApplicationDbContext() : base("DefaultConnection")
    {
    
    }
    

    ASP 身份 2.0.0

    // Set the throwIfV1Schema to false...
    public ApplicationDbContext() : base("DefaultConnection", throwIfV1Schema: false)
    {
    
    }
    

    我不知道为什么这不会影响我的本地开发版本,但它解决了我的问题。希望这对某人有帮助!

    【讨论】:

    • 谢谢大家。我整个上午都在努力解决这个问题。我经历了与您相同的过程。这让我发疯了。
    • 这也对我有用,尽管我的 see 方法没有触发(它在我的本地开发机器上执行)。有什么想法吗?
    • @JasonJames 您是否 100% 确定您检查了“执行代码优先迁移(在应用程序启动时运行)”。发布时的复选框?
    • 当我添加额外的参数时,当我去发布它时,我什至没有在可用数据库列表中看到用于 Identity 的上下文。我仍然看到其他上下文,但没有种子方法。但是,模式仅在我第一次尝试访问表时创建,而不是在发布期间创建。
    • 谢谢!您帮助解决了一个令我非常沮丧的问题!
    【解决方案2】:

    我只是取消点击“执行代码先迁移”它就可以了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多