WebMethodAttribute.CacheDuration Eigenschaft

Definition

Ruft die Anzahl der Sekunden ab, für die die Antwort zwischengespeichert werden soll, oder legt diese fest.

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

Eigenschaftswert

Die Anzahl der Sekunden ab, für die die Antwort zwischengespeichert werden soll. Der Standardwert ist 0 (null) und bedeutet, dass die Antwort nicht zwischengespeichert wird.

Beispiele

Im folgenden Beispiel wird das Ergebnis des Aufrufs der ServiceUsage XML-Webdienstmethode 60 Sekunden lang in den Cache abgelegt. Jedes Mal, wenn ein XML-Webdienstclient während dieser Zeit die ServiceUsage XML-Webdienstmethode ausführt, wird das gleiche Ergebnis zurückgegeben.

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

Hinweise

Wenn das Zwischenspeichern aktiviert ist, werden Anforderungen und Antworten mindestens für die Cachedauer im Arbeitsspeicher auf dem Server gespeichert. Daher ist Vorsicht geboten, wenn Sie erwarten, dass Die Anforderungen oder Antworten sehr groß sind oder die Anforderungen stark variieren.

Zwei Probleme können sich auf die Ausgabezwischenspeicherung in einer ASP.NET 2.0-Webdienstanwendung auswirken.

Die HTTP-Methode der Testseite wurde in ASP.NET 2.0 von GET zu POST geändert. POSTs werden normalerweise jedoch nicht zwischengespeichert. Wenn Sie für die Testseite in einer ASP.NET 2.0-Webdienstanwendung die Verwendung von GET festlegen, funktioniert die Zwischenspeicherung ordnungsgemäß.

Darüber hinaus soll ein Benutzer-Agent (der Browser oder die aufrufende Anwendung) in HTTP die Möglichkeit haben, die Zwischenspeicherung auf dem Server zu überschreiben, indem er "Cache-Control" auf "no-cache" festlegt. Daher ignorieren ASP.NET-Anwendungen zwischengespeicherte Ergebnisse, wenn sie einen auf "no-cache" festgelegten Header vorfinden.

Gilt für: