"Свойство ConnectionString не было инициализировано." - но только при публикации

У меня есть веб-сайт 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, я протестировал строку подключения (возвращается ОК), и это экран настроек:

Есть идеи о том, что происходит?

ОБНОВИТЬ:

Если не выбрать ApplicationDbContext и вместо этого выберите DefaultConnection это работает, однако я не смогу использовать код первой миграции. Как я могу получить ApplicationDBContext снова работать?

2 ответа

Решение

Для всех, кто сталкивается с этой проблемой - я нашел свое решение.

Я только что обновил ASP Identity до версии 2.0.0 через Nuget, и когда он установил пакет 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)
{

}

Я понятия не имею, почему это не повлияло на мою локальную версию разработки, но это решило мою проблему. Надеюсь, это поможет кому-то!

Я просто снимаю галочку "выполнить миграцию кода в первую очередь", это работает.

Другие вопросы по тегам