我有一个ASP.NET页面,我试图做一些输出缓存,但遇到了问题。 我的ASPX页面有ASP.NET'甜甜圈缓存'不起作用
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="MYProject._Default" %>
<%@ OutputCache Duration="600" VaryByParam="None" %>
<%@ Register TagPrefix="MYProjectUC" TagName="PageHeader" Src="~/Lib/UserControls/PageHeader.ascx" %>
<%@ Register TagPrefix="MYProjectUC" TagName="PageFooter" Src="~/Lib/UserControls/PageFooter.ascx" %>
我在ASPX页面称为“PageHeader”用户控制。在PageHeader.ascx
中,我有一个ASP.NET Substitution
控件,我想根据登录的用户显示一些链接。
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="PageHeader.ascx.cs" Inherits="MyProject.Lib.UserControls.PageHeader1" %>
<div class="headerRow">
<div class="headerLogo">
<a href="Default.aspx"><img src="Lib/Images/header.gif" alt=""></a>
</div>
<div id="divHeaderMenu" runat="server">
<asp:Substitution ID="subLinks" runat="server" MethodName="GetUserProfileHeaderLinks" />
</div>
</div><!--headerRow-->
在我的用户控件的代码隐藏我将返回根据是否使用的登录或不使用会话字符串中的静态方法:
public static string GetUserProfileHeaderLinks(HttpContext context)
{
string strHeaderLinks = string.Empty;
// check session and return string
return strHeaderLinks;
}
,但是网页仍然显示了同样的内容为登录用户和来宾用户。
我的目标是让页面被缓存,除了替换控件中的内容。我该怎么做呢?
如果你在GetUserProfileHeaderLinks里添加一个断点,是否总是命中? – 2010-04-08 16:48:10
如果删除OutputCache,它可以正常工作吗? – Glennular 2010-04-08 17:05:57
是的,它每次都被击中。但即使我在会话中有一些价值,它显示我的愿望为零。 我从Default.aspx中删除了输出缓存指令,它工作得很好。但是缓存工作在这里吗?不,我想,对吧? – Shyju 2010-04-09 15:51:41