从Asp.Net中的用户控件清除输出缓存

时间:2013-04-01 06:19:25

标签: c# asp.net caching

我有一个名为uc_Menu.ascx的用户控件。 menues动态加载Role个基础。所以,我将它包含在用户控件中并像这样缓存它;
注意:出于测试目的,我只提供60秒缓存;

<%@ 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按钮(在母版页上)时清除缓存,因为菜单是角色基础,管理员可能会为用户提供更多权限。在这种情况下,有必要再次重新发布菜单。 那么,我如何从用户控件中清除缓存;
注意:我也尝试了这个,但它没有用; http://aspalliance.com/668_Remove_ASPNET_Page_Output_Cache_Entries
AND

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 个答案:

没有答案