次の方法で共有


ASP.NET 互換性

Download sample

このサンプルでは、Windows Communication Foundation (WCF) で ASP.NET 互換性モードを有効にする方法を示します。ASP.NET 互換性モードで実行されるサービスは ASP.NET アプリケーション パイプラインに完全に組み込まれるので、ファイルや URL の承認、セッション状態、HttpContext クラスなどの ASP.NET の機能を使用できるようになります。HttpContext クラスを使用すると、Cookie、セッション、およびその他の ASP.NET 機能にアクセスできます。このモードでは、バインディングは HTTP トランスポートを使用し、サービス自体は IIS でホストされる必要があります。

このサンプルでは、クライアントはコンソール アプリケーション (.exe) で、サービスはインターネット インフォメーション サービス (IIS) によってホストされています。

Noteメモ :

このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。

このサンプルは、電卓サービスを実装する「入門サンプル」に基づいています。ICalculator コントラクトは、一連の算術演算を実行して実行結果を保持できるように ICalculatorSession コントラクトに変更されました。

[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface ICalculatorSession
{
    [OperationContract]
    void Clear();
    [OperationContract]
    void AddTo(double n);
    [OperationContract]
    void SubtractFrom(double n);
    [OperationContract]
    void MultiplyBy(double n);
    [OperationContract]
    void DivideBy(double n);
    [OperationContract]
    double Result();
}

サービスはこの機能を使用して、複数のサービス操作が呼び出されて計算を実行する際に、各クライアントの状態を保持します。クライアントは Result を呼び出して現在の結果を取得したり、Clear を呼び出してその結果をクリアし、0 にすることができます。

このサービスは ASP.NET セッションを使用して、各クライアント セッションの結果を保持します。これにより、サービスは、サービスへの複数の呼び出しによる各クライアントの実行結果を保持できます。

Noteメモ :

ASP.NET セッション状態と WCF セッションとでは、大きく異なります。WCF セッションの詳細については、「サービス コントラクト : セッション」を参照してください。

サービスは ASP.NET セッション状態と密接な依存関係にあるので、正常に機能させるには ASP.NET 互換性モードが必要です。これらの要件は、AspNetCompatibilityRequirements 属性を適用することにより宣言によって表されます。

[AspNetCompatibilityRequirements(RequirementsMode =
                       AspNetCompatibilityRequirementsMode.Required)]
public class CalculatorService : ICalculatorSession
{
    double Result
    {  // store result in AspNet Session
       get {
          if (HttpContext.Current.Session["Result"] != null)
             return (double)HttpContext.Current.Session["Result"];
          return 0.0D;
       }
       set
       {
          HttpContext.Current.Session["Result"] = value;
       }
    }
    public void Clear()
    {
        Result = 0.0D;
    }
    public void AddTo(double n)
    {
        Result += n;
    }
    public void SubtractFrom(double n)
    {
        Result -= n;
    }
    public void MultiplyBy(double n)
    {
        Result *= n;
    }
    public void DivideBy(double n)
    {
        Result /= n;
    }
    public double Result()
    {
        return Result;
    }
}

このサンプルを実行する場合は、操作要求および応答はクライアントのコンソール ウィンドウに表示されます。クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。

    0, + 100, - 50, * 17.65, / 2 = 441.25
    Press <ENTER> to terminate client.

サンプルを設定、ビルド、および実行するには

  1. Windows Communication Foundation サンプルの 1 回限りのセットアップの手順」が実行済みであることを確認します。

  2. ソリューションの C# 版または Visual Basic .NET 版をビルドするには、「Windows Communication Foundation サンプルのビルド」の手順に従います。

  3. サンプルを単一コンピュータ構成または複数コンピュータ構成で実行するには、「Windows Communication Foundation サンプルの実行」の手順に従います。

Footer image

Copyright © 2007 by Microsoft Corporation.All rights reserved.