WebMethodAttribute.CacheDuration Propiedad

Definición

Obtiene o establece el número de segundos durante los cuales la respuesta se almacena en la caché.

public:
 property int CacheDuration { int get(); void set(int value); };
public int CacheDuration { get; set; }
member this.CacheDuration : int with get, set
Public Property CacheDuration As Integer

Valor de propiedad

Número de segundos durante los cuales la respuesta se almacena en la caché. El valor predeterminado es 0, lo que significa que la respuesta no se almacena en la caché.

Ejemplos

En el ejemplo siguiente se coloca el resultado de la llamada al método de ServiceUsage servicio web XML en la memoria caché durante 60 segundos. Cada vez que un cliente de servicio web XML ejecuta el ServiceUsage método de servicio web XML durante ese tiempo, se devuelve el mismo resultado.

<%@ WebService Language="C#" Class="Counter" %>

using System.Web.Services;
using System;
using System.Web;

public class Counter : WebService {
     
     [ WebMethod(Description="Number of times this service has been accessed",
     CacheDuration=60,MessageName="ServiceUsage") ]
     public int ServiceUsage() {
          // If the XML Web service has not been accessed, initialize it to 1.
          if (Application["MyServiceUsage"] == null) {
              Application["MyServiceUsage"] = 1;
          }
          else {
              // Increment the usage count.
              Application["MyServiceUsage"] = ((int) Application["MyServiceUsage"]) + 1;
          }

          // Return the usage count.     
          return  (int) Application["MyServiceUsage"];
     }
}
<%@ WebService Language="VB" Class="Counter" %>

Imports System.Web.Services
Imports System
Imports System.Web

Public Class Counter
    Inherits WebService  

    <WebMethod(Description := "Number of times this service has been accessed", _
        CacheDuration := 60, _
        MessageName := "ServiceUsage")> _
    Public Function ServiceUsage() As Integer
        
        ' If the XML Web service has not been accessed, initialize it to 1.
        If Application("MyServiceUsage") Is Nothing Then
            Application("MyServiceUsage") = 1
        Else
            ' Increment the usage count.
            Application("MyServiceUsage") = CInt(Application("MyServiceUsage")) + 1
        End If
        
        ' Return the usage count.
        Return CInt(Application("MyServiceUsage"))
    End Function
End Class

Comentarios

Cuando el almacenamiento en caché está habilitado, las solicitudes y las respuestas se mantienen en memoria en el servidor durante al menos la duración de la memoria caché, por lo que debe tener precaución si espera que las solicitudes o respuestas sean muy grandes o que las solicitudes varían ampliamente.

Hay dos aspectos que pueden afectar al almacenamiento en la caché de resultados en una aplicación de servicio Web ASP.NET 2.0.

En ASP.NET 2.0, el método HTTP de la página de prueba se ha cambiado de GET a POST. Sin embargo, los métodos POST normalmente no se almacenan en caché. Si cambia la página de prueba de una aplicación de servicio Web ASP.NET 2.0 para utilizar GET, el almacenamiento en caché funciona correctamente.

Además, HTTP indica que un agente de usuario (el explorador o la aplicación que realiza la llamada) debe tener la capacidad de anular el almacenamiento en caché del servidor estableciendo la directiva de control de caché en no caché. Por consiguiente, las aplicaciones ASP.NET omiten los resultados almacenados en caché si encuentran un encabezado que indica que no se debe utilizar el almacenamiento en caché.

Se aplica a