Click to Rate and Give Feedback
MSDN
MSDN Library
Web Development
ASP.NET
ASP.NET 4
ASP.NET Caching
 How to: Check the Validity of a Cac...
Collapse All/Expand All Collapse All
This page is specific to
Microsoft Visual Studio 2010/.NET Framework 4

Other versions are also available for the following:
.NET Framework 4 - ASP.NET
How to: Check the Validity of a Cached Page

When a cached page is requested by a user, ASP.NET determines whether the cached output is still valid based on the cache policy you have defined in the page. If the output is valid, the cached output is sent to the client and the page is not re-processed. However, ASP.NET provides you with the ability to run code during this validation check using a validation callback, so that you can write custom logic to check whether the page is valid. The validation callback allows you to invalidate cached pages outside of the normal process of using cache dependencies.

To programmatically check the validity of a cached page

  1. Define an event handler of type HttpCacheValidateHandler and include code that checks the validity of the cached page response.

    The validation handler must return one of the following HttpValidationStatus values:

    • Invalid   Indicates that the cached page is invalid, the page is evicted from the cache, and the request is handled as a cache miss.

    • IgnoreThisRequest   Causes the request to be treated as a cache miss. The page is therefore processed again, but the cached page is not invalidated.

    • Valid   Indicates that the cached page is valid.

    The following code example illustrates a validation handler named ValidateCacheOutput that determines whether the query string variable status contains the values "invalid" or "ignore". If the status value is "invalid", the method returns Invalid and the page is invalidated in the cache. If the status value is "ignore", the method returns IgnoreThisRequest and the page is left in the cache but a new response is generated for this request.

    C#
    public static void ValidateCacheOutput(HttpContext context, Object data,
            ref HttpValidationStatus status)
    {
        if (context.Request.QueryString["Status"] != null)
        {
            string pageStatus = context.Request.QueryString["Status"];
    
            if (pageStatus == "invalid")
                status = HttpValidationStatus.Invalid;
            else if (pageStatus == "ignore")
                status = HttpValidationStatus.IgnoreThisRequest;
            else
                status = HttpValidationStatus.Valid;
        }
        else
            status = HttpValidationStatus.Valid;
    }

    Visual Basic
    Public Shared Sub ValidatePage(ByVal context As HttpContext, _
            ByVal data As [Object], ByRef status As HttpValidationStatus)
        If Not (context.Request.QueryString("Status") Is Nothing) Then
            Dim pageStatus As String = context.Request.QueryString("Status")
    
            If pageStatus = "invalid" Then
                status = HttpValidationStatus.Invalid
            ElseIf pageStatus = "ignore" Then
                status = HttpValidationStatus.IgnoreThisRequest
            Else
                status = HttpValidationStatus.Valid
            End If
       Else
           status = HttpValidationStatus.Valid
       End If
    End Sub
  2. From one of the page life-cycle events (such as the page's Load event), call the AddValidationCallback method, passing as the first argument the event handler you defined in step 1.

    The following code example sets the ValidateCacheOutput method to be the validation handler.

    C#
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Cache.AddValidationCallback(
            new HttpCacheValidateHandler(ValidateCacheOutput),
            null);
    }

    Visual Basic
    Protected Sub Page_Load(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles Me.Load
    
        Response.Cache.AddValidationCallback( _
            New HttpCacheValidateHandler(AddressOf ValidatePage), Nothing)
    End Sub
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Processing
© 2012 Microsoft. All rights reserved. Terms of Use | Trademarks | Privacy Statement
Page view tracker