Поделиться через


Как включить для веб-службы кэширования вывод на сервере

Этот раздел посвящен технологии прежних версий. Веб-службы XML и клиенты веб-служб XML должны создаваться с использованием Windows Communication Foundation.

В следующем примере кода показано, как использовать свойство CacheDuration для методов веб-службы, чтобы задать кэширование вывода в течение 60 секунд. В этом примере демонстрируется одно из правил, описанных в разделе Правила разработки XML-веб-служб, созданных с помощью ASP.NET.

Есть две причины, которые могут повлиять на кэширование вывода в приложении веб-службы ASP.NET 2.0.

В ASP.NET 2.0 метод HTTP тестовой страницы был изменен с GET на POST. Однако данные POST обычно не кэшируются. Если задать для тестовой страницы в приложении веб-службы ASP.NET 2.0 использование метода GET, кэширование будет работать должным образом.

Кроме того, протокол HTTP подразумевает, что агент пользователя (браузер или вызывающее приложение) должен иметь возможность переопределять кэширование на сервере путем указания значения "no-cache" для параметра управления кэшем "Cache-Control". Поэтому кэшированные результаты игнорируются приложениями ASP.NET при наличии заголовка "no-cache".

Пример

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

См. также

Задачи

Как включить кэширование вывода на клиенте веб-службы

Основные понятия

Правила разработки XML-веб-служб, созданных с помощью ASP.NET