"Свойство 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)
{
}
Я понятия не имею, почему это не повлияло на мою локальную версию разработки, но это решило мою проблему. Надеюсь, это поможет кому-то!
Я просто снимаю галочку "выполнить миграцию кода в первую очередь", это работает.