我想知道是否可以将outputcache与querystring参数和会话参数一起使用。
我正在提供基于位置的内容,并且countryid存储在会话中,而其他参数如categoryid,pageindex存储在querystring中。
答案 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);
}