如何:对 Web 服务启用服务器端输出缓存
下面的代码示例演示如何对 Web 服务方法使用 CacheDuration 属性,以便指定持续时间为 60 秒的输出缓存。 此示例阐释了使用 ASP.NET 创建的 XML Web services 的设计准则主题中阐述的准则之一。
有两个问题可以影响 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 应用程序找到“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
请参见
任务
概念
使用 ASP.NET 创建的 XML Web services 的设计准则
版权所有 (C) 2007 Microsoft Corporation。保留所有权利。