WebMethodAttribute.CacheDuration Tulajdonság

Definíció

Lekéri vagy beállítja, hogy hány másodpercig kell a választ a gyorsítótárban tartani.

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

Tulajdonság értéke

A válasznak a gyorsítótárban kell tartania a másodpercek számát. Az alapértelmezett érték 0, ami azt jelenti, hogy a válasz nem gyorsítótárazva van.

Példák

Az alábbi példa 60 másodpercre helyezi az ServiceUsage XML webszolgáltatás metódusának hívásának eredményét a gyorsítótárban. Minden alkalommal, amikor egy XML-webszolgáltatás-ügyfél végrehajtja az ServiceUsage XML-webszolgáltatás metódusát ez idő alatt, ugyanaz az eredmény lesz visszaadva.

<%@ 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

Megjegyzések

Ha a gyorsítótárazás engedélyezve van, a kérések és válaszok a kiszolgálón legalább a gyorsítótár időtartama alatt a memóriában vannak tárolva, ezért körültekintően kell eljárni, ha a kérések vagy válaszok nagy méretűek lesznek, vagy a kérések széles körben eltérőek lesznek.

A ASP.NET 2.0-s webszolgáltatás-alkalmazások kimeneti gyorsítótárazását két probléma befolyásolhatja.

A ASP.NET 2.0-s verziójában a tesztlap HTTP-metódusa GET-ről POST-ra változott. A POST-k azonban általában nem gyorsítótárazva vannak. Ha egy ASP.NET 2.0-s webszolgáltatás-alkalmazásban módosítja a tesztlapot a GET használatára, a gyorsítótárazás megfelelően működik.

A HTTP azt is jelzi, hogy egy felhasználói ügynöknek (a böngészőnek vagy a hívó alkalmazásnak) képesnek kell lennie felülbírálni a kiszolgáló gyorsítótárazását úgy, hogy a "Gyorsítótár-vezérlés" beállítást "gyorsítótár nélküli" értékre állítja. ASP.NET alkalmazások ezért figyelmen kívül hagyják a gyorsítótárazott eredményeket, amikor "nem gyorsítótárazott" fejlécet találnak.

A következőre érvényes: