ASP.NET 相容性

這個範例會示範如何在 Windows Communication Foundation (WCF) 中啟用 ASP.NET 相容模式。在 ASP.NET 相容模式中執行的服務會完全參與 ASP.NET 應用程式管線,並且會利用像是檔案/URL 授權、工作階段狀態,以及 HttpContext 類別等 ASP.NET 功能。HttpContext 類別允許存取 Cookie、工作階段以及其他 ASP.NET 功能。這個模式會要求這些繫結使用 HTTP 傳輸,而且服務本身必須以 IIS 裝載。

在這個範例中,用戶端是主控台應用程式 (可執行檔),而服務則是由網際網路資訊服務 (IIS) 裝載。

ms752234.note(zh-tw,VS.90).gif注意:
此範例的安裝程序與建置指示位於本主題的結尾。

這個範例是以實作計算機服務的使用者入門範例為基礎。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 工作階段來儲存每個用戶端工作階段的結果。這樣服務便可在跨多個服務呼叫時維護每個工作階段的執行結果。

ms752234.note(zh-tw,VS.90).gif注意:
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 範例的單次安裝程序

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

  3. 若要在單一或跨電腦的組態中執行本範例,請遵循執行 Windows Communication Foundation 範例中的指示。

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.