Condividi tramite


Procedura: abilitare la cache di output lato server per un servizio Web

Questo argomento è specifico di una tecnologia legacy. Servizi Web XML e client di servizi Web XML devono essere creati attualmente tramite Windows Communication Foundation.

Nell'esempio di codice seguente viene illustrato come utilizzare la proprietà CacheDuration su metodi del servizio Web per specificare la memorizzazione nella cache di output per un periodo di 60 secondi. In questo esempio viene illustrata una delle linee guida spiegate nell'argomento, Progettare linee guida per i servizi Web XML creati utilizzando ASP.NET.

Vi sono due fattori che possono influire sulla memorizzazione dell'output nella cache in un'applicazione servizio Web ASP.NET 2.0.

In ASP.NET 2.0 il metodo HTTP della pagina di prova non è più GET, ma POST. I metodi POST, tuttavia, in genere non vengono memorizzati nella cache. Se si modifica la pagina di prova in un'applicazione servizio Web ASP.NET 2.0 in modo che venga utilizzato GET, la memorizzazione nella cache non presenta problemi.

Inoltre per HTTP è indicato che un agente utente (il browser o l'applicazione chiamante) dovrebbe essere in grado di eseguire l'override della memorizzazione nella cache impostando "Cache-Control" su "no-cache". Pertanto le applicazioni ASP.NET ignorano i risultati memorizzati nella cache quando trovano un'intestazione "no-cache".

Esempio

<%@ WebService Language="C#" Class="MathService" %>
using System;
using System.Web.Services;
public class MathService : WebService {
   [WebMethod(CacheDuration=60)]
   public float Add(float a, float b)
   {
       return a + b;
   }
   [WebMethod(CacheDuration=60)]
   public float Subtract(float a, float b)
   {
       return a - b;
   }
   [WebMethod(CacheDuration=60)]
   public float Multiply(float a, float b)
   {
       return a * b;
   }
   [WebMethod(CacheDuration=60)]
   public float Divide(float a, float b)
   {
       if (b==0) return -1;
       return a / b;
   }
}  
<%@ WebService Language="VB" Class="MathService" %>
Imports System
Imports System.Web.Services
Public Class MathService
    Inherits WebService 
    <WebMethod(CacheDuration := 60)> _
    Public Function Add(a As Single, b As Single) As Single
        Return a + b
    End Function

    <WebMethod(CacheDuration := 60)> _
    Public Function Subtract(a As Single, b As Single) As Single
        Return a - b
    End Function

    <WebMethod(CacheDuration := 60)> _
    Public Function Multiply(a As Single, b As Single) As Single
        Return a * b
    End Function

    <WebMethod(CacheDuration := 60)> _
    Public Function Divide(a As Single, b As Single) As Single
        If b = 0 Then
            Return - 1
        End If
        Return a / b
    End Function
End Class

Vedere anche

Attività

Procedura: abilitare la cache di output su un client del servizio Web

Concetti

Linee guida di progettazione per servizi Web XML creati tramite ASP.NET