Настройка строки подключения EF в Azure Web App
у нас есть приложение ASP .NET (MVC) и мы используем Entity Framework 6 для подключения к нашим базам данных. DbContext построен стандартным образом и загружает строку соединения от нашего имени. Сгенерированный код выглядит следующим образом:
public partial class MyContext : DbContext
{
public MyContext(string connectionName)
: base("name=" + connectionName)
{
}
}
мы задаем строку подключения в локальной сети.config также стандартным способом:
<configuration>
<connectionStrings>
<add name="DefaultConnection"
connectionString="metadata=...;provider connection string="...""
providerName="System.Data.EntityClient" />
когда мы публикуем приложение в Azure, мы переходим к порталу Azure, затем к настройкам веб-приложения, а затем к списку соединений Веревка. Там мы добавляем строку подключения EF, которую мы использовали локально. При перезапуске и посещении приложения мы получаем ошибку времени выполнения в зависимости от типа строки подключения, которую мы выбираем.
на Custom
введите мы получаем следующую ошибку времени выполнения:
Ключевое слово не поддерживается: 'источник данных'.
на SQL Server
или SQL Database
мы получаем следующую ошибку во время выполнения:
Ключевое слово не поддерживается: "метаданные".
Это действительно кажется простой историей, поэтому нам интересно, что происходит не так.
3 ответов
проблема в экранированных кавычках:"
.
строки подключения в web.config имеют кавычки, экранированные, потому что они сериализуются в атрибуте XML. При вводе строки подключения на портале Azure необходимо указать необработанную строку без эскапады. Что-то вроде этого:--3-->
metadata=...;provider connection string="Data Source=..."
ответ Дэвида Эббо хорош для подтверждения того, что среда настроена так, как вы ожидаете. Также полезно обратить внимание наpubxml файл, когда публикация с помощью мастера в Visual Studio: он также попытается заполнить строки подключения.
'custom' должен быть правильным здесь. В этом случае providerName остается неизменным, поэтому, если у вас есть System.Data.EntityClient
в вашей конфигурации это должно остаться после того, как среда выполнения Azure изменит его.
найти Консоль Kudu и нажмите на среду, чтобы убедиться, что строка conn выглядит правильно.
Если у вас есть эта линия в интернете.connfig
<add name="Entities" connectionString="metadata=res://*/TestDB.csdl|res://*/TestDB.ssdl|res://*/TestDB.msl;provider=System.Data.SqlClient;provider connection string="Data Source=XXXXXXXX.database.windows.net,1433;Initial Catalog=YourDB;User ID=YourUser;Password=XXXXXX"" providerName="System.Data.EntityClient" />
добавьте это в Azure portal:
Name Column => Entities
Value Column => metadata=res://*/TestDB.csdl|res://*/TestDB.ssdl|res://*/TestDB.msl;provider=System.Data.SqlClient;provider connection string="Data Source=XXXXXXXX.database.windows.net,1433;Initial Catalog=YourDB;User ID=YourUser;Password=XXXXXX"
"Custom" - In the drop selection box
убедитесь ,что (как указано в первом ответе) заменить "
С "