WebMethodAttribute.CacheDuration Propriété

Définition

Obtient ou définit la durée en secondes pendant laquelle la réponse doit être maintenue dans le cache.

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

Valeur de propriété

Int32

Durée en secondes pendant laquelle la réponse doit être maintenue dans le cache. La valeur par défaut est 0 et signifie que la réponse n'est pas mise en cache.

Exemples

L’exemple suivant place le résultat de l’appel à la ServiceUsage méthode de service web XML dans le cache pendant 60 secondes. Chaque fois qu’un client de service web XML exécute la ServiceUsage méthode de service Web XML pendant cette période, le même résultat est retourné.

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

Remarques

Lorsque la mise en cache est activée, les demandes et les réponses sont conservées en mémoire sur le serveur pendant au moins la durée du cache, de sorte que la prudence doit être utilisée si vous attendez que les demandes ou réponses soient très volumineuses ou que vous attendez que les requêtes varient largement.

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

S’applique à