WebMethodAttribute.CacheDuration Propriedade

Definição

Obtém ou define o número de segundos que a resposta deve ser mantida na 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

Valor de Propriedade

O número de segundos em que a resposta deve ser mantida na cache. O padrão é 0, o que significa que a resposta não está em cache.

Exemplos

O exemplo seguinte coloca o resultado da chamada ao ServiceUsage método do serviço Web XML na cache durante 60 segundos. Sempre que um cliente de serviço Web XML executa o ServiceUsage método do serviço Web XML durante esse período, o mesmo resultado é devolvedo.

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

Observações

Quando o cache está ativado, os pedidos e respostas são mantidos na memória do servidor pelo menos durante a duração da cache, por isso deve ter cautela se esperar que os pedidos ou respostas sejam muito grandes ou se esperar que os pedidos variem bastante.

Existem dois problemas que podem afetar a cache de saída numa aplicação de serviço Web ASP.NET 2.0.

No ASP.NET 2.0, o método HTTP da página de teste mudou de GET para POST. No entanto, os POSTs normalmente não são armazenados em cache. Se alterar a página de teste numa aplicação de serviço Web ASP.NET 2.0 para usar o GET, a cache funciona corretamente.

Além disso, o HTTP indica que um agente de utilizador (o navegador ou a aplicação de chamada) deve ser capaz de sobrescrever a cache do servidor definindo o "Controlo-Cache" para "no-cache". As aplicações ASP.NET, portanto, ignoram os resultados em cache quando encontram um cabeçalho "no-cache".

Aplica-se a