WebMethodAttribute.CacheDuration 属性

定义

获取或设置应在缓存中保存响应的秒数。

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

属性值

响应应保存在缓存中的秒数。 默认值为 0,这意味着不会缓存响应。

示例

以下示例将调用 ServiceUsage XML Web 服务方法的结果置于缓存中 60 秒。 每当 XML Web 服务客户端在此期间执行 ServiceUsage XML Web 服务方法时,将返回相同的结果。

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

注解

启用缓存的请求和响应至少在服务器上的内存中保留缓存持续时间时,如果预期请求或响应非常大,或者预期请求差异很大,则必须谨慎使用。

有两个问题可能会影响 ASP.NET 2.0 Web 服务应用程序中的输出缓存。

在 ASP.NET 2.0 中,测试页的 HTTP 方法已从 GET 更改为 POST。 但是,POST 通常不会缓存。 如果将 ASP.NET 2.0 Web 服务应用程序中的测试页更改为使用 GET,则缓存可以正常工作。

此外,HTTP 指示用户代理(浏览器或调用应用程序)应该能够通过将“Cache-Control”设置为“no-cache”来替代服务器缓存。 因此,ASP.NET 应用程序在找到“无缓存”标头时忽略缓存的结果。

适用于