Получить строку подключения базы данных SQL Azure, которая связана с веб-сайтом Windows Azure с помощью C#.NET
На странице конфигурации веб-сайта Windows Azure есть раздел "Строки подключения". В этом разделе перечислены строки подключения для связанных ресурсов. Как программно получить строку подключения для связанной базы данных SQL Azure?
1 ответ
Решение
Программно получить строку подключения следующим образом:
connString =
Environment.GetEnvironmentVariable("PREFIX_myConnStringName");
Explaination
Строки подключения Azure становятся переменными среды. Документация объясняет, что Azure создает переменные с префиксами следующим образом:
SQL Server: SQLCONNSTR_myConnStringName
MySQL: MYSQLCONNSTR_myConnStringName
База данных SQL: SQLAZURECONNSTR_myConnStringName
Пользовательский: CUSTOMCONNSTR_myConnStringName
SQL Azure: SQLAZURECONNSTR_myConnStringName
Зная это, мы можем получить нужную строку подключения с помощью следующего кода:
connString =
Environment.GetEnvironmentVariable("SQLAZURECONNSTR_myConnStringName");
Другой вариант
В качестве другого варианта, этот связанный пост о том, как получить доступ к строке подключения через web.config, выглядит следующим образом:
<add name="myConnStringName"
connectionString="you can leave this blank"
providerName="System.Data.SqlClient" />
Примечание: нам может не потребоваться включать атрибут providerName.
Дальнейшие исследования
Мы можем просмотреть все доступные переменные среды и строки подключения, поместив этот код в представление Razor. Внимание: это раскроет ваш пароль!
<ul>
@foreach (System.Collections.DictionaryEntry ev in Environment.GetEnvironmentVariables())
{
if (ev.Value.ToString().ToLower().Contains("data source"))
{
<li><strong>@ev.Key.ToString()</strong> @ev.Value.ToString()</li>
}
}
</ul>
<ul>
@foreach (System.Configuration.ConnectionStringSettings cs in System.Configuration.ConfigurationManager.ConnectionStrings)
{
<li><strong>@cs.Name</strong> @cs.ConnectionString</li>
}
</ul>
Это все на данный момент.
Получение строки подключения в качестве переменной окружения таким способом может показаться неправильным. Вы должны определить его в строке подключения, а затем просто вызвать GetConnectionString из интерфейса IConfiguration, не усложняя его и не добавляя префиксы строк базы данных.
Попробуйте следующее: это упрощает
IConfiguration config = new ConfigurationBuilder()
.AddEnvironmentVariables()
.Build();
var connection = _config.GetConnectionString("DatabaseConnection");