WebMethodAttribute.CacheDuration Propriété

Définition

Obtient ou définit le nombre de secondes pendant lesquelles la réponse doit être conservée 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é

Nombre de secondes pendant lesquelles la réponse doit être conservée dans le cache. La valeur par défaut est 0, ce qui 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. Vous devez donc être prudent si vous attendez que les demandes ou réponses soient très volumineuses ou que les demandes varient beaucoup.

Il existe deux problèmes qui 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 a changé de GET à POST. Toutefois, les POST ne sont pas normalement 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.

En outre, HTTP indique qu’un agent utilisateur (le navigateur ou l’application appelante) doit être en mesure de remplacer la mise en cache du serveur en définissant « Cache-Control » sur « no-cache ». ASP.NET applications ignorent donc les résultats mis en cache lorsqu’elles trouvent un en-tête « no-cache ».

S’applique à