WebMethodAttribute.CacheDuration Egenskap

Definition

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.

Gäller för