我有一個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