基于查询字符串参数和会话的ASP.NET Outputcache

时间:2010-03-03 18:06:52

标签: c# asp.net caching

我想知道是否可以将outputcache与querystring参数和会话参数一起使用。

我正在提供基于位置的内容,并且countryid存储在会话中,而其他参数如categoryid,pageindex存储在querystring中。

1 个答案:

答案 0 :(得分:-1)

通过使用VaryByCustom可以根据您想要的任何内容改变输出缓存,并提供一个特殊的函数来返回缓存键字符串。对于您的情况,请尝试这样的指令:

<%@ OutputCache Duration="30" VaryByParam="myParam" VaryByCustom="mySessionVar" %>

然后在Global.asax中,覆盖应用程序的GetVaryByCustomString函数:

public override string GetVaryByCustomString(HttpContext context, string arg)
{
    if(arg == "mySessionVar" && Session["mySessionVar"] != null)
    {
        return Session["mySessionVar"].ToString();
    }

     return base.GetVaryByCustomString(context, arg);
}