gpt4 book ai didi

ASP.NET 'Donut Caching' 不工作

转载 作者:行者123 更新时间:2023-12-02 04:16:26 24 4
gpt4 key购买 nike

我有一个 ASP.NET 页面,我试图在其中进行一些输出缓存,但遇到了问题。
我的 ASPX 页面有

<%@ 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-->

在我的用户控件代码隐藏中,我有一个静态方法,它将根据使用的是否登录或不使用 session 返回一个字符串:
public static string GetUserProfileHeaderLinks(HttpContext context)
{
string strHeaderLinks = string.Empty;
// check session and return string
return strHeaderLinks;
}

但是该页面仍然为登录用户和访客用户显示相同的内容。

我的目标是让页面被缓存,除了替换控件中的内容。我该怎么做呢?

最佳答案

您将要缓存页面的多个版本。您将需要一个用于登录 View 和一个用于访客 View 。您可以通过 VaryByParams 或 VaryByHeaders 设置两个不同的 View 。

http://msdn.microsoft.com/en-us/library/aa719665%28v=VS.71%29.aspx

关于ASP.NET 'Donut Caching' 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2601628/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com