Compartir a través de


Cómo: Habilitar el almacenamiento en la memoria caché de resultados del lado del servidor para un servicio web

Este tema es específico de una tecnología heredada. Ahora, los servicios Web XML y los clientes de servicios Web XML deben crearse con Windows Communication Foundation.

El ejemplo de código siguiente muestra cómo utilizar la propiedad CacheDuration en métodos de servicio Web para especificar el almacenamiento en la caché de resultados para un período de 60 segundos. Este ejemplo muestra una de las instrucciones explicadas en el tema, Instrucciones de diseño para los serviciosWeb XML creados con ASP.NET.

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é.

Ejemplo

<%@ WebService Language="C#" Class="MathService" %>
using System;
using System.Web.Services;
public class MathService : WebService {
   [WebMethod(CacheDuration=60)]
   public float Add(float a, float b)
   {
       return a + b;
   }
   [WebMethod(CacheDuration=60)]
   public float Subtract(float a, float b)
   {
       return a - b;
   }
   [WebMethod(CacheDuration=60)]
   public float Multiply(float a, float b)
   {
       return a * b;
   }
   [WebMethod(CacheDuration=60)]
   public float Divide(float a, float b)
   {
       if (b==0) return -1;
       return a / b;
   }
}  
<%@ WebService Language="VB" Class="MathService" %>
Imports System
Imports System.Web.Services
Public Class MathService
    Inherits WebService 
    <WebMethod(CacheDuration := 60)> _
    Public Function Add(a As Single, b As Single) As Single
        Return a + b
    End Function

    <WebMethod(CacheDuration := 60)> _
    Public Function Subtract(a As Single, b As Single) As Single
        Return a - b
    End Function

    <WebMethod(CacheDuration := 60)> _
    Public Function Multiply(a As Single, b As Single) As Single
        Return a * b
    End Function

    <WebMethod(CacheDuration := 60)> _
    Public Function Divide(a As Single, b As Single) As Single
        If b = 0 Then
            Return - 1
        End If
        Return a / b
    End Function
End Class

Vea también

Tareas

Cómo: Habilitar el almacenamiento en la caché de resultados en un cliente de servicios web

Conceptos

Instrucciones de diseño para servicios web XML creados con ASP.NET