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, die die Antwort im Cache aufbewahrt werden soll, oder legt sie 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, die die Antwort im Cache aufbewahrt werden soll. Der Standardwert ist 0, was bedeutet, dass die Antwort nicht zwischengespeichert wird.
Beispiele
Im folgenden Beispiel wird das Ergebnis des Aufrufs der ServiceUsage XML-Webdienstmethode für 60 Sekunden im Cache platziert. Jedes Mal, wenn ein XML-Webdienstclient die ServiceUsage XML-Webdienstmethode während dieser Zeit ausführt, wird dasselbe 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, sodass Vorsicht erforderlich ist, wenn Sie erwarten, dass Anforderungen oder Antworten sehr groß sind oder Sie erwarten, dass Anforderungen sehr unterschiedlich sind.
Es gibt zwei Probleme, die sich auf die Ausgabezwischenspeicherung in einer ASP.NET 2.0-Webdienstanwendung auswirken können.
In ASP.NET 2.0 hat sich die HTTP-Methode der Testseite von GET zu POST geändert. POSTs werden jedoch normalerweise nicht zwischengespeichert. Wenn Sie die Testseite in einer ASP.NET 2.0-Webdienstanwendung so ändern, dass GET verwendet wird, funktioniert das Zwischenspeichern ordnungsgemäß.
Darüber hinaus gibt HTTP an, dass ein Benutzer-Agent (der Browser oder die aufrufende Anwendung) in der Lage sein sollte, die Serverzwischenspeicherung außer Kraft zu setzen, indem "Cache-Control" auf "no-cache" festgelegt wird. ASP.NET Anwendungen ignorieren daher zwischengespeicherte Ergebnisse, wenn sie einen "no-cache"-Header finden.