2013-04-01 5 views
1

나는 사용자 이름이 uc_Menu.ascx 인 컨트롤이 있습니다. menues은 동적으로 Role 기본으로로드됩니다. 그래서, 나는 그것을 사용자 콘트롤에 inlude하고 이렇게 캐시했다.
참고 : 테스트 목적으로 나는 단지 60 초 캐시를 제공합니다.Asp.Net의 사용자 정의 컨트롤에서 출력 캐시 지우기

<%@ OutputCache Duration="60" VaryByParam="none" %> 
<td id="Menu"> 
    <div id="firstpane" runat="server" class="menu_list"> 
     <p class="menu_head"> 
      <a href="/forms/Dashboard.aspx"> 
       <span style="background: url('/App_Themes/Default/Images/icons/ic_grid.png') no-repeat"></span> 
       DashBoard 
      </a> 
     </p> 
    </div> 
</td> 

코드 숨김 코드는 다음과 같습니다.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     BulitMenus(); 
     Response.Write("<h1>" + DateTime.Now.ToString() + "</h1>"); 
    } 
} 

위의 사용자 컨트롤을 참조한 나의 마스터 페이지. 내가이 시험 때

<%@ Register Src="~/UserControls/uc_Menu.ascx" TagPrefix="Ken" TagName="Menu" %> 
<Ken:Menu runat="server" id="Menus" /> 

자, 잘 작동
는 그러나, 나는 때 LogOff 사용자가 버튼을 클릭 (에 캐시를 지우려면 (페이지가 처음로드 될 때, 캐시 일) 마스터 페이지) 메뉴가 역할 기반이고 관리자가 사용자에게 더 많은 권한을 부여 할 수 있기 때문입니다. 이 경우 메뉴를 다시 relode해야합니다. 그래서 사용자 정의 컨트롤에서 캐시를 지우려면 어떻게해야합니까?
참고 : 나는 또한 이것을 시도했지만 작동하지 않습니다. http://aspalliance.com/668_Remove_ASPNET_Page_Output_Cache_Entries

protected void Lbtn_LogOff_Click(object sender, EventArgs e) 
{ 

    HttpResponse.RemoveOutputCacheItem("/UserControls/uc_Menu.ascx"); 
    // this code is copied from a url above which i have included i my question 
    HttpContext.Current.Cache.Insert("Pages", DateTime.Now, null, 
     System.DateTime.MaxValue, System.TimeSpan.Zero, 
     System.Web.Caching.CacheItemPriority.NotRemovable, null); 

    FormsAuthentication.SignOut(); 
    Response.Redirect("~/authorization/Login.aspx"); 
} 
+0

특히 VaryByParam = "none"인 경우 역할 기반 컨트롤에 출력 캐시를 사용하는 것은 좋지 않습니다. 귀하의 경우, 관리자를 위해 메뉴가 캐시되면 동일한 방법으로 사용자에게 표시됩니다. 예 : http://stackoverflow.com/questions/290098/asp-net-mvc-caching-vary-by-authentication 또는 http://stackoverflow.com/questions/2109928/how-to-turn-output-caching- off-for-authenticated-users-in-asp-net-mvc 등 – Lanorkin

답변

관련 문제