我想在页面生命周期之前运行自定义逻辑,以决定我想要向用户提供的缓存页面的版本。
示例:
如果用户未登录,则转到缓存字典,捕获页面的版本A并提供给用户。否则,如果它被记录,那么我将看看我是否已经缓存了特定于该用户的页面版本。如果某个特定的缓存版本尚不存在,我将让生命周期完成,然后我将保存它。
我想要的是管理页面的不同版本,并确定是否应该提供版本或其他版本。
答案 0 :(得分:3)
您应该能够使用VaryByCustom
,并让ASP.NET担心从缓存中提取正确版本的页面等。
在页面本身......
<%@ OutputCache Duration="60" VaryByParam="None" VaryByCustom="LoggedInUser" %>
在您的Global.asax文件中......
public override string GetVaryByCustomString(HttpContext context, string custom)
{
if (custom == "LoggedInUser")
{
if (UserIsLoggedIn())
{
return "LoggedInUser:" + GetUserNameOrSomeOtherUniquePerUserString();
}
else
{
return "LoggedInUser:NONE";
}
}
return base.GetVaryByCustomString(context, custom);
}