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 應用程式集區才能執行。 若要建立新的應用程式集區,或修改默認應用程式集區,請遵循下列步驟。
開啟 [ 控制台]。 開啟 [系統和安全性] 標題下的 [系統管理工具] 小程式。 開啟 Internet Information Services (IIS) 管理員 小程式。
展開 [ 連線 ] 窗格中的樹視圖。 選取 [應用程式集區] 節點。
若要將默認應用程式集區設定為使用 .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 版本,請遵循建置 Windows Communication Foundation 範例 中中的指示。
建置解決方案之後,請執行 Setup.bat 在 IIS 7.0 中設定 ServiceModelSamples 應用程式。 ServiceModelSamples 目錄現在應該會顯示為 IIS 7.0 應用程式。
若要在單一計算機或跨計算機組態中執行範例,請遵循 執行 Windows Communication Foundation 範例中的指示。