일부 출력 캐싱을 시도하지만 문제가있는 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
컨트롤이 있는데 로그인 한 사용자를 기반으로 몇 가지 링크를 표시하려고합니다. 페이지가 여전히 같은 표시
public static string GetUserProfileHeaderLinks(HttpContext context)
{
string strHeaderLinks = string.Empty;
// check session and return string
return strHeaderLinks;
}
그러나 : 코드 숨김 내 사용자 컨트롤에서
<%@ 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-->
나는이 로그인 또는 세션을 사용하지 않는 사용 여부에 따라 문자열을 반환하는 정적 메서드가 로그인 한 사용자와 게스트 사용자 모두를위한
내 목표는 대체 컨트롤 내부의 콘텐츠를 제외한 페이지를 캐싱하는 것입니다. 어떻게해야합니까?
GetUserProfileHeaderLinks 내에 중단 점을 추가하면 항상 중단됩니까? –
OutputCache를 제거하면 제대로 작동합니까? – Glennular
예, 그 때마다 치고 받고 있습니다.하지만 세션에서 어떤 가치가 있더라도, 내 sesion을 보여주는 것은 null입니다. Default.aspx에서 Output cache 지시문을 제거하고 제대로 작동했습니다. 그러나 여기에서 캐싱이 작동합니까? 아냐, 아냐. 그래? – Shyju