У меня есть страница ASP.NET, где я пытаюсь выполнить некоторое кэширование вывода, но столкнулся с проблемой. Моя страница ASPX имеетASP.NET 'Donut Caching' не работает
<%@ 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" %>
У меня есть пользовательский элемент управления под названием «PageHeader» на странице ASPX. В 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, ударил ВСЕГДА? –
Работает ли это нормально, если вы удаляете OutputCache? – Glennular
Да, его ударяют каждый раз. Но даже если у меня есть какое-то значение в сеансе, его показ моего сеанса равен нулю. Я удалил директиву кэша вывода из Default.aspx и работал хорошо. Но работает ли кэширование здесь? Нет, я думаю. Правильно? – Shyju