WebMethodAttribute.CacheDuration Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee haalt u het aantal seconden op dat het antwoord moet worden bewaard in de 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
Waarde van eigenschap
Het aantal seconden dat het antwoord in de cache moet worden bewaard. De standaardwaarde is 0, wat betekent dat het antwoord niet in de cache wordt opgeslagen.
Voorbeelden
In het volgende voorbeeld wordt het resultaat van de aanroep naar de ServiceUsage XML-webservicemethode gedurende 60 seconden in de cache geplaatst. Telkens wanneer een XML-webserviceclient de ServiceUsage XML-webservicemethode gedurende die tijd uitvoert, wordt hetzelfde resultaat geretourneerd.
<%@ 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
Opmerkingen
Wanneer caching is ingeschakelde aanvragen en antwoorden worden bewaard in het geheugen op de server gedurende ten minste de cacheduur, dus wees voorzichtig als u verwacht dat aanvragen of antwoorden zeer groot zijn of als u verwacht dat aanvragen sterk variƫren.
Er zijn twee problemen die van invloed kunnen zijn op uitvoercache in een ASP.NET 2.0-webservicetoepassing.
In ASP.NET 2.0 is de HTTP-methode van de testpagina gewijzigd van GET in POST. POST's worden echter niet normaal in de cache opgeslagen. Als u de testpagina in een ASP.NET 2.0-webservicetoepassing wijzigt om GET te gebruiken, werkt caching goed.
Bovendien geeft HTTP aan dat een gebruikersagent (de browser of aanroepende toepassing) de cache van de server moet kunnen overschrijven door 'Cache-Control' in te stellen op 'no-cache'. ASP.NET toepassingen daarom de resultaten in de cache negeren wanneer ze een header zonder cache vinden.