WebMethodAttribute.CacheDuration Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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.