Извлечение переменных из web.config для динамического назначения - PullRequest
1 голос
/ 22 ноября 2010

Я использую sql-зависимое кэширование в своем приложении ASP.NET, и для этого у меня есть следующая запись в web.config:

<connectionStrings>
  <add name="DatabaseName" connectionString="Data Source=.\Dev;Initial Catalog=DatabaseName;Integrated Security=True" />
</connectionStrings>

<system.web>
  <caching>
    <sqlCacheDependency enabled="true">
      <databases>
        <add name="DatabaseName" connectionStringName="DatabaseName"/>
      </databases>
    </sqlCacheDependency>
  </caching>
</system.web>

В приложении SqlCacheDependency создается с помощьюимя базы данных, указанное в файле web.config, например:

var tableDependency = new SqlCacheDependency("DatabaseName", "TableName");

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

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

Заранее спасибо,

Грег.

Ответы [ 2 ]

1 голос
/ 22 ноября 2010

Насколько я могу судить, "код позади" sqlCacheDependency берет строку подключения непосредственно из файла конфигурации, поэтому она должна быть там.

Оставьте раздел строк соединений пустым в файле web.config, затем используйте код из этого вопроса , чтобы программно добавить правильную строку соединения.

Вам нужно поместить его в место, которое вызывается перед любым другим кодом, может быть, даже обработчиком или модулем, иначе sqlCacheDependency может не «перехватить» правильное значение. Возможно, будет достаточно Application_Start для global.asax.

0 голосов
/ 22 ноября 2010

Я полагаю, что вы можете настроить зависимости кэша программно, используя класс SqlCacheDependencyAdmin, поэтому вам не нужно полагаться на SqlDependency для чтения настроек из файла web.config.

...