HOW TO:為 Web 服務啟用伺服器端輸出快取
下列程式碼範例示範如何在 Web 服務方法上使用 CacheDuration 屬性,來指定 60 秒的輸出快取週期。此範例說明使用 ASP.NET 建立之 XML Web Service 的設計方針主題所解釋的其中一項方針。
有兩個問題會影響 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 Service 的設計方針
Copyright © 2007 by Microsoft Corporation. All rights reserved.