从web.config中取出变量以动态分配

时间:2010-11-22 12:22:30

标签: c# asp.net web-config connection-string

我在我的ASP.NET应用程序中使用sql依赖缓存,为了实现这一点,我在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>

在应用程序中,使用web.config中指定的数据库名称创建SqlCacheDependency,如下所示:

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

我想要实现的是在web.config中不再需要连接字符串,因为当放置到不同的服务器上时,此应用程序的连接字符串可能会发生变化。

应用程序中已经有一个连接字符串类,它返回当前所在服务器的正确字符串,所以不使用它,我将不得不手动更改每个服务器上web.config中的连接字符串。 / p>

提前致谢,

格雷格。

2 个答案:

答案 0 :(得分:1)

据我所知,sqlCacheDependency的“代码隐藏”是直接从配置文件中获取连接字符串,因此必须在那里。

在web.config中将connectionstrings部分留空,然后使用this question中的代码以编程方式添加正确的连接字符串。

你需要将它放在任何其他代码之前调用的地方,甚至可能是Handler或Module,否则sqlCacheDependency可能不会“捕获”正确的值。也许global.asax的Application_Start就足够了。

答案 1 :(得分:0)

我相信您可以使用SqlCacheDependencyAdmin类以编程方式设置缓存依赖项,这样您就不必依赖SqlDependency来读取web.config文件中的设置。