1

Мне нужно развернуть изменения строки подключения для сущности framework, членства asp.net (которые находятся в разделе connectionstrings в файле web.config) и состоянии сеанса (которое в sqlconnectionstring sessonstate) в web.config, когда я настраиваю эти параметры в конфигурации сервиса azure windows.Необходимость ServiceConfiguration.cscfg для заполнения строки состояния и строк подключения web.config

Во время разработки мы тестируем наше приложение как стандартное приложение asp.net webforms, но после его развертывания оно работает в лазурном режиме. Поэтому нам нужно разрешить работу сайта как в лазурном, так и в лазурном контексте. Вот почему мы просто полагаемся на значения в web.config на данный момент. Поскольку эти строки подключения не вызываются непосредственно в моем коде, записывая класс утилиты, который захватывает из azure service config, если это доступно или иначе захватывает из web.config а не возможность для этих значений.

Я понимаю, что редактирование web.config приведет к сбою в обслуживании - и я планирую делать это только в нерабочее время.

ответ

2

Я считаю, что лучший подход заключается в том, чтобы обернуть вашу конфигурационную информацию в службу. Затем, в службе, используйте RoleEnvironment, чтобы определить, какие параметры использовать. Например

public static class Config 
{ 
    public static string ConnStr 
    { 
     get 
     { 
      if (RoleEnvironment.IsAvailable) 
       return RoleEnvironment.GetConfigurationSettingValue("ConnStr"); 

      return ConfigurationManager.AppSettings["ConnStr"]; 
     } 
    } 
} 

Если это не работает, и вы должны изменить фактическое web.config (например, с помощью именованных строк соединения), то вам необходимо изменить конфигурации во время выполнения. В вашем начале роли, сделать что-то вроде следующего:

var config = WebConfigurationManager.OpenWebConfiguration(null); 
var connStrs = WebConfigurationManager.OpenWebConfiguration(null).GetSection("connectionStrings") as ConnectionStringsSection; 
connStrs.ConnectionStrings["ConnStr"].ConnectionString = RoleEnvironment.GetConfigurationSettingValue("ConnStr"); 
config.Save(); 

Для обработки при изменении конфигурации после роли работает, просто называют один и тот же код, что и выше от события RoleEnvironment.Changing.

Успехов,

Erick

+0

спасибо за пример кода. настройка при запуске роли запускается только при развертывании экземпляра, но мой экземпляр уже может быть развернут и запущен - и мне нужно изменить файл web.config во время работы экземпляра - есть ли у вас пример для этого? – DkDev

+0

Вам нужно вызвать код, который обновляет web.config при изменении конфигурации ролей. Событие RoleEnvironment.Changing - это то, что вы хотите использовать. –