Vorgehensweise: Aktivieren der serverseitigem Ausgabezwischenspeicherung für einen Webdienst
Dieses Thema bezieht sich auf eine veraltete Technologie. XML-Webdienste und XML-Webdienstclients sollten nun mithilfe der folgenden Technologie erstellt werden: Windows Communication Foundation.
Das folgende Codebeispiel zeigt, wie Sie die CacheDuration-Eigenschaft für Webdienstmethoden verwenden, um die Ausgabezwischenspeicherung für einen Zeitraum von 60 Sekunden anzugeben. Dieses Beispiel veranschaulicht eine der Richtlinien, die im Thema Entwurfsrichtlinien für mit ASP.NET erstellte XML-Webdienste erläutert werden.
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.
Beispiel
<%@ WebService Language="C#" Class="MathService" %>
using System;
using System.Web.Services;
public class MathService : WebService {
[WebMethod(CacheDuration=60)]
public float Add(float a, float b)
{
return a + b;
}
[WebMethod(CacheDuration=60)]
public float Subtract(float a, float b)
{
return a - b;
}
[WebMethod(CacheDuration=60)]
public float Multiply(float a, float b)
{
return a * b;
}
[WebMethod(CacheDuration=60)]
public float Divide(float a, float b)
{
if (b==0) return -1;
return a / b;
}
}
<%@ WebService Language="VB" Class="MathService" %>
Imports System
Imports System.Web.Services
Public Class MathService
Inherits WebService
<WebMethod(CacheDuration := 60)> _
Public Function Add(a As Single, b As Single) As Single
Return a + b
End Function
<WebMethod(CacheDuration := 60)> _
Public Function Subtract(a As Single, b As Single) As Single
Return a - b
End Function
<WebMethod(CacheDuration := 60)> _
Public Function Multiply(a As Single, b As Single) As Single
Return a * b
End Function
<WebMethod(CacheDuration := 60)> _
Public Function Divide(a As Single, b As Single) As Single
If b = 0 Then
Return - 1
End If
Return a / b
End Function
End Class
Siehe auch
Aufgaben
Vorgehensweise: Aktivieren der Ausgabezwischenspeicherung auf einem Webdienstclient
Konzepte
Entwurfsrichtlinien für mit ASP.NET erstellte XML-Webdienste