Comment : activer la mise en cache de sortie côté serveur pour un service Web

Cette rubrique est spécifique à une technologie existante. Les services Web XML et les clients du service Web XML doivent à présent être créés à l'aide de Windows Communication Foundation.

L'exemple de code suivant montre comment utiliser la propriété CacheDuration sur les méthodes de service Web pour spécifier la mise en cache de sortie pour une période de 60 secondes. Cet exemple illustre l'une des indications expliquée dans la rubrique Règles de conception pour les services Web XML créés à l'aide d'ASP.NET.

Deux problèmes peuvent affecter la mise en cache de sortie dans une application de service Web ASP.NET 2.0.

Dans ASP.NET 2.0, la méthode HTTP de la page de test est passée de GET à POST. Toutefois, les POST ne sont normalement pas mis en cache. Si vous modifiez la page de test dans une application de service Web ASP.NET 2.0 pour utiliser GET, la mise en cache fonctionne correctement.

De plus, HTTP indique qu'un agent utilisateur (user agent) (le navigateur ou l'application appelante) doit pouvoir substituer la mise en cache sur le serveur en affectant la valeur "no-cache" au paramètre "Cache-Control". Les applications ASP.NET ignorent donc les résultats mis en cache lorsqu'elles trouvent un en-tête "no-cache".

Exemple

<%@ 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

Voir aussi

Tâches

Comment : activer la mise en cache de sortie sur un client de service Web

Concepts

Règles de conception pour les services Web XML créés à l'aide d'ASP.NET