WebMethodAttribute.CacheDuration Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar eller anger hur många sekunder svaret ska lagras i cacheminnet.
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
Egenskapsvärde
Antalet sekunder som svaret ska lagras i cacheminnet. Standardvärdet är 0, vilket innebär att svaret inte cachelagras.
Exempel
I följande exempel placeras resultatet av anropet till ServiceUsage XML-webbtjänstmetoden i cacheminnet i 60 sekunder. Varje gång en XML-webbtjänstklient kör ServiceUsage XML-webbtjänstmetoden under den tiden returneras samma resultat.
<%@ 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
Kommentarer
När cachelagring är aktiverat lagras begäranden och svar i minnet på servern under minst cachetiden, så försiktighet måste användas om du förväntar dig att begäranden eller svar ska vara mycket stora eller om du förväntar dig att begäranden varierar kraftigt.
Det finns två problem som kan påverka cachelagring av utdata i ett ASP.NET 2.0-webbtjänstprogram.
I ASP.NET 2.0 har HTTP-metoden för testsidan ändrats från GET till POST. Post-objekt cachelagras dock normalt inte. Om du ändrar testsidan i ett ASP.NET 2.0-webbtjänstprogram för att använda GET fungerar cachelagringen korrekt.
Dessutom anger HTTP att en användaragent (webbläsaren eller det anropande programmet) ska kunna åsidosätta servercachelagring genom att ställa in "Cache-Control" på "no-cache". ASP.NET program ignorerar därför cachelagrade resultat när de hittar ett "no-cache"-huvud.