共用方式為


ASP.NET 相容性

ASPNetCompatibility 範例示範如何在 Windows Communication Foundation (WCF) 中啟用 ASP.NET 相容性模式。 以 ASP.NET 相容性模式執行的服務會完全參與 ASP.NET 應用程式管線,並可以使用檔案/URL 授權、會話狀態和 HttpContext 類別等 ASP.NET 功能。 類別 HttpContext 可存取 Cookie、會話及其他 ASP.NET 功能。 此模式需要系結使用 HTTP 傳輸,且服務本身必須裝載於 IIS 中。

在此範例中,用戶端是控制台應用程式(可執行檔),且服務裝載在 Internet Information Services (IIS) 中。

備註

此範例的設定程式和建置指示位於本主題結尾。

此範例需要 .NET Framework 4 應用程式集區才能執行。 若要建立新的應用程式集區,或修改默認應用程式集區,請遵循下列步驟。

  1. 開啟 [ 控制台]。 開啟 [系統和安全性] 標題下的 [系統管理工具] 小程式。 開啟 Internet Information Services (IIS) 管理員 小程式。

  2. 展開 [ 連線 ] 窗格中的樹視圖。 選取 [應用程式集區] 節點。

  3. 若要將默認應用程式集區設定為使用 .NET Framework 4(這可能會導致現有網站不相容的問題),請以滑鼠右鍵按兩下 DefaultAppPool 清單專案,然後選取 [ 基本設定...]。 將 .Net Framework 版本 下拉式清單設定為 .Net Framework v4.0.30128 (或更新版本)。

  4. 若要建立使用 .NET Framework 4 的新應用程式集區(以保留其他應用程式的相容性),請以滑鼠右鍵按兩下 [ 應用程式 集區] 節點,然後選取 [ 新增應用程式集區...]。 將新的應用程式集區命名為 ,並將 .Net Framework 版本 下拉式設定為 .Net Framework v4.0.30128 (或更新版本)。 執行下列設定步驟之後,以滑鼠右鍵按兩下 ServiceModelSamples 應用程式,然後選取 [ 管理應用程式]、[ 進階設定...]。 將 應用程式集區 設定為新的應用程式集區。

此範例是以實作計算機服務的 用戶入門為基礎。 合約 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將結果清除為零。

服務會使用 ASP.NET 會話來儲存每個用戶端會話的結果。 這可讓服務在對服務的多個呼叫之間維護每個客戶端的執行結果。

備註

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 範例執行One-Time 安裝程式

  2. 若要建置解決方案的 C# 或 Visual Basic .NET 版本,請遵循建置 Windows Communication Foundation 範例 中的指示。

  3. 建置解決方案之後,請執行 Setup.bat 在 IIS 7.0 中設定 ServiceModelSamples 應用程式。 ServiceModelSamples 目錄現在應該會顯示為 IIS 7.0 應用程式。

  4. 若要在單一計算機或跨計算機組態中執行範例,請遵循 執行 Windows Communication Foundation 範例中的指示。

另請參閱