检索<缓存>web.config 中的元素

发布于 2024-10-19 20:10:34 字数 1537 浏览 5 评论 0原文

我一直在尝试从 web.config 获取缓存元素,但迄今为止失败。

使用此代码时:

Configuration conf  = WebConfigurationManager.OpenWebConfiguration(System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath);

我能够获取 web.configh 文件。 当我使用时,

conf.GetSection("system.web/membership");

我成功获得了会员部分。

当我使用时

conf.GetSection("system.web/caching");

我得到空。

有什么想法吗?

下面是 web.config 的一部分:

    <system.web>
<caching>
  <sqlCacheDependency enabled="true" pollTime="1000">
    <databases>
      <clear />
      <add name="Tests" pollTime="1000" connectionStringName="TestsConnectionString"/>          
    </databases>        
  </sqlCacheDependency>      
</caching>
        <authentication mode="Forms">
        <forms loginUrl="~/Account/Login.aspx" timeout="2880"/>
    </authentication>
    <membership>
        <providers>
            <clear/>
            <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"/>
        </providers>
    </membership>

....

I've been trying to get the caching element from my web.config but have thus far failed.

When using this code:

Configuration conf  = WebConfigurationManager.OpenWebConfiguration(System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath);

I am able to get at the web.configh file.
When i use

conf.GetSection("system.web/membership");

I succefuly get the membership section.

When i use

conf.GetSection("system.web/caching");

I get null.

Any ideas ?

part of the web.config below:

    <system.web>
<caching>
  <sqlCacheDependency enabled="true" pollTime="1000">
    <databases>
      <clear />
      <add name="Tests" pollTime="1000" connectionStringName="TestsConnectionString"/>          
    </databases>        
  </sqlCacheDependency>      
</caching>
        <authentication mode="Forms">
        <forms loginUrl="~/Account/Login.aspx" timeout="2880"/>
    </authentication>
    <membership>
        <providers>
            <clear/>
            <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"/>
        </providers>
    </membership>

....

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深巷少女 2024-10-26 20:10:34

您是否已将返回类型正确转换为 OutputCacheSection?

const string outputCacheKey = "system.web/caching/outputCache";
var outputCacheSection = ConfigurationManager.GetSection(outputCacheKey) as OutputCacheSection;

现在假设您想在第一个提供者节点中获取名为 connectionString 的属性,例如

<caching>
  <outputCache enableOutputCache="true" defaultProvider="MyRedisOutputCache">
    <providers>
      <add name="MyRedisOutputCache" connectionString="myapp.redis.cache.windows.net:6380,password=hellopassword,ssl=True,abortConnect=False" type="Microsoft.Web.Redis.RedisOutputCacheProvider,Microsoft.Web.RedisOutputCacheProvider" />
    </providers>
  </outputCache>
</caching>

您可以执行以下操作

string defaultProviderName = outputCacheSection.DefaultProviderName;
ProviderSettings ps = outputCacheSection.Providers[defaultProviderName];
var cs = ps.Parameters["connectionString"];

Have you casted the return type correctly as OutputCacheSection?

const string outputCacheKey = "system.web/caching/outputCache";
var outputCacheSection = ConfigurationManager.GetSection(outputCacheKey) as OutputCacheSection;

Now say you wanted to get an attribute named connectionString within the first provider node e.g.

<caching>
  <outputCache enableOutputCache="true" defaultProvider="MyRedisOutputCache">
    <providers>
      <add name="MyRedisOutputCache" connectionString="myapp.redis.cache.windows.net:6380,password=hellopassword,ssl=True,abortConnect=False" type="Microsoft.Web.Redis.RedisOutputCacheProvider,Microsoft.Web.RedisOutputCacheProvider" />
    </providers>
  </outputCache>
</caching>

you could do something like this

string defaultProviderName = outputCacheSection.DefaultProviderName;
ProviderSettings ps = outputCacheSection.Providers[defaultProviderName];
var cs = ps.Parameters["connectionString"];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文