Получить строку подключения базы данных 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");
Другие вопросы по тегам