ASP.NET 相容性
ASPNetCompatibility 範例會示範如何在 Windows Communication Foundation (WCF) 中啟用 ASP.NET 相容性模式。 在 ASP.NET 相容模式中執行的服務會完全參與 ASP.NET 應用程式管線,並且會利用像是檔案/URL 授權、工作階段狀態,以及 HttpContext 類別等 ASP.NET 功能。 HttpContext 類別允許存取 Cookie、工作階段以及其他 ASP.NET 功能。 這個模式會要求這些繫結使用 HTTP 傳輸,而且服務本身必須以 IIS 裝載。
在這個範例中,用戶端是主控台應用程式 (可執行檔),而服務則是由網際網路資訊服務 (IIS) 裝載。
注意
此範例的安裝程序與建置指示位於本主題的結尾。
此範例需要 .NET Framework 4 應用程式集區才能執行。 若要建立應用程式集區,或是修改預設的應用程式集區,請遵循下列步驟。
開啟 [控制台]。 開啟 [系統及安全性] 標題下的 [系統管理工具] Applet。 開啟 [Internet Information Services (IIS) 管理員] Applet。
展開 [連線] 窗格中的樹狀檢視。 選取 [應用程式集區] 節點。
若要設定預設應用程式集區以使用 .NET Framework 4 (這可能造成與現有站台不相容的問題),請以滑鼠右鍵按一下 [DefaultAppPool] 清單項目,然後選取 [基本設定...]。 將 [.Net Framework 版本] 下拉式清單設定為 [.Net Framework v4.0.30128] (或更新版本)。
若要建立使用 .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.
若要安裝、建置及執行範例
若要建置方案的 C# 或 Visual Basic .NET 版本,請遵循 Building the Windows Communication Foundation Samples中的指示。
在建立解決方案後,執行 Setup.bat 以便在 IIS 7.0 中安裝 ServiceModelSamples 應用程式。 ServiceModelSamples 目錄現在應該會顯示為 IIS 7.0 應用程式。
若要在單一電腦或跨電腦設定中執行此範例,請依照執行 Windows Communication Foundation 範例中的指示操作。