правильное место для строки подключения

#asp.net #azure #azure-sql-database

#asp.net #azure #azure-sql-database

Вопрос:

Работа с веб-ролью Azure, которая взаимодействует с базой данных SQL Azure. В настоящее время, когда я создаю файл edmx для базы данных SQL Azure, строки подключения пароль имени пользователя добавляются в файл web.config. Я выполнил поиск, и там было несколько записей о том, как зашифровать web.config / как использовать это для переключения между dev и prod, но я подумываю о перемещении строки conn из web.config.

Есть ли способ, с помощью которого я могу переместить строку подключения в файл определения сервиса? Это рекомендуемый подход? Если я перемещу строку подключения в другое место, смогу ли я по-прежнему использовать классы edmx и generated objectcontext (потому что мой существующий код использует автоматически сгенерированный класс entity).

Ответ №1:

Лучше всего переместить ваши строки подключения в файл конфигурации сервиса. Это позволяет вам переключиться на другую базу данных SQL Azure без перераспределения. Переключение на другую базу данных SQL Azure без перераспределения полезно, когда произошел сбой или истекло время ожидания, и у вас есть готовая резервная копия на другом сервере для переключения.

Однако вам нужно будет инициализировать контексты вашего объекта, предоставив строку подключения отдельно.

Используйте RoleEnvironment.Доступно, чтобы узнать, работаете ли вы под Azure, и следующий код для чтения настроек в .cscfg:

переменная ConnectionString = RoleEnvironment.GetConfigurationSettingValue(«Строка подключения»);

Комментарии:

1. Когда Visual Studio генерирует файл edmx, он также добавляет строку подключения объекта. Должен ли я удалить это из web.config? Смогу ли я по-прежнему использовать автоматически сгенерированный контекст объекта и просто передать строку его конструктору? Любые указатели на примеры кода были бы великолепны…

2. Кроме того, должен ли я также хранить имя пользователя и пароль в файле cscfg? Должно ли оно / может ли оно быть зашифровано?

3. Вам больше не нужно хранить строку подключения в web.config, если только вы не проводите тестирование без эмулятора Azure. Ознакомьтесь с моей записью в блоге, касающейся управления файлами .config amp; .cscfg, чтобы увидеть, как я предпочитаю управлять средой, черт возьми, когда в Azure @ paraleap.com/blog/post /…

Ответ №2:

Я рекомендую иметь строку подключения в обоих местах, в файле конфигурации сервиса (.cscfg) и Web.config. Где я также рекомендую с самого начала, чтобы ваша веб-роль могла выполняться вне среды Azure. Это повлияет на вашу производительность в долгосрочной перспективе. Особенно при ежедневной разработке, когда вы вносите небольшие изменения и вам нужно запускать проект локально для проверки. Запуск вашей службы локально в IIS, IIS Express или Cassini (кодовое имя для Asp.net env) в настоящее время выполняется быстрее, чем запуск вашего проекта в локальном эмуляторе azure (devFabric). Что касается вашего второго вопроса о сохранении имени пользователя и пароля. Все зависит от уровня безопасности, который вы ищете. Информация, хранящаяся в вашем файле .cscfg, передается по протоколу https и защищена в облаке Azure так же, как защищено ваше приложение. При этом я бы сохранил учетные данные ТЕСТОВОЙ учетной записи в проекте для тестирования и поместил бы учетные данные учетной записи ПРОИЗВОДСТВЕННОГО хранилища в .cscfg только во время развертывания в общедоступную / производственную службу.