代码之家  ›  专栏  ›  技术社区  ›  Greg

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

  •  1
  • Greg  · 技术社区  · 14 年前

    我在我的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中的连接字符串。

    提前谢谢你,

    格雷格。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Community CDub    8 年前

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

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

    您需要将它放在任何其他代码(甚至处理程序或模块)之前调用的位置,否则sqlCacheDependency可能无法“捕获”正确的值。也许global.asax的应用程序启动就足够了。

        2
  •  0
  •   Jakob Christensen    14 年前

    我相信您可以使用 SqlCacheDependencyAdmin 上课这样你就不用依赖 SqlDependency 从web.config文件中读取设置。