方法 : Web サービスのサーバー側の出力キャッシュを有効にする
このトピックの対象は、レガシ テクノロジに特定されています。XML Web サービスと XML Web サービス クライアントは以下を使用して作成してください。 Windows Communication Foundation.
次のコード例では、Web サービス メソッドで CacheDuration プロパティを使用して、出力キャッシュ時間を 60 秒間に指定する方法を示します。この例は、「ASP.NET を使用して作成する XML Web サービスのデザイン ガイドライン」で説明されているガイドラインの 1 つを示しています。
ASP.NET 2.0 Web サービス アプリケーションの出力キャッシュに影響を及ぼす可能性がある問題が 2 つあります。
ASP.NET 2.0 では、テスト ページの HTTP メソッドが GET から POST に変更されました。しかし、通常、POST はキャッシュされません。GET を使用するように ASP.NET 2.0 Web サービス アプリケーションのテスト ページを変更すれば、キャッシュは正常に動作します。
また、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
参照
処理手順
方法 : Web サービス クライアントで出力キャッシュを有効にする