HttpCachePolicy.AddValidationCallback Method (System.Web)

Switch View :
ScriptFree
.NET Framework Class Library
HttpCachePolicy.AddValidationCallback Method

Registers a validation callback for the current response.

Namespace:  System.Web
Assembly:  System.Web (in System.Web.dll)
Syntax

Visual Basic
Public Sub AddValidationCallback ( _
	handler As HttpCacheValidateHandler, _
	data As Object _
)
C#
public void AddValidationCallback(
	HttpCacheValidateHandler handler,
	Object data
)
Visual C++
public:
void AddValidationCallback(
	HttpCacheValidateHandler^ handler, 
	Object^ data
)
F#
member AddValidationCallback : 
        handler:HttpCacheValidateHandler * 
        data:Object -> unit 

Parameters

handler
Type: System.Web.HttpCacheValidateHandler
The HttpCacheValidateHandler value.
data
Type: System.Object
The arbitrary user-supplied data that is passed back to the AddValidationCallback delegate.
Exceptions

Exception Condition
ArgumentNullException

The specified handler is null.

Remarks

The AddValidationCallback method provides a mechanism to check the response programmatically in the cache before the response is returned to the client by the output cache.

Before the response is served from the Web server cache, all registered handlers are queried to ensure resource validity. If any handler sets a flag indicating that the cached response is not valid, the entry is marked as not valid and expelled from the cache. In this case, as well as when any handler indicates that the cached response should be ignored for this request, the request is then handled as if it were a cache miss.

AddValidationCallback is introduced in the .NET Framework version 3.5. For more information, see .NET Framework Versions and Dependencies.

Examples

The following code example demonstrates how to add a delegate to validate a request based on query string values.

Visual Basic

<%@ Page Language="VB" %>
<%@ OutputCache VaryByParam="none" Duration="600" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
   shared validationstate As String

   Public Sub Page_Load(sender As Object, e As EventArgs)
      Response.Cache.AddValidationCallback(new HttpCacheValidateHandler(AddressOf Me.ValidateCache), nothing)
      stamp.InnerHtml = DateTime.Now.ToString("r")
   End Sub

   Public Shared Sub ValidateCache(context As HttpContext, data As Object, ByRef status as HttpValidationStatus)
      If (context.Request.QueryString("Valid") = "false") Then
         status = HttpValidationStatus.Invalid
      Elseif (context.Request.QueryString("Valid") = "ignore") Then
         status = HttpValidationStatus.IgnoreThisRequest
      Else
         status = HttpValidationStatus.Valid
      End If
   End Sub

</script>


C#

<%@ Page Language="C#" %>
<%@ OutputCache VaryByParam="none" Duration="600" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script language="c#" runat="server">

   static string validationstate;

   public void Page_Load()
   {
      Response.Cache.AddValidationCallback(new HttpCacheValidateHandler(ValidateCache), null);
      stamp.InnerHtml = DateTime.Now.ToString("r");
   }

   public static void ValidateCache(HttpContext context, Object data, ref HttpValidationStatus status) 
   {
      if (context.Request.QueryString["Valid"] == "false") 
      {
         status = HttpValidationStatus.Invalid;
      } 
      else if (context.Request.QueryString["Valid"] == "ignore") 
      {
         status = HttpValidationStatus.IgnoreThisRequest;
      } 
      else 
      {
         status = HttpValidationStatus.Valid;
      }
   }

</script>


Version Information

.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0
Platforms

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
See Also

Reference