ASP.NET 相容性
這個範例會示範如何在 Windows Communication Foundation (WCF) 中啟用 ASP.NET 相容模式。在 ASP.NET 相容模式中執行的服務會完全參與 ASP.NET 應用程式管線,並且會利用像是檔案/URL 授權、工作階段狀態,以及 HttpContext 類別等 ASP.NET 功能。HttpContext 類別允許存取 Cookie、工作階段以及其他 ASP.NET 功能。這個模式會要求這些繫結使用 HTTP 傳輸,而且服務本身必須以 IIS 裝載。
在這個範例中,用戶端是主控台應用程式 (可執行檔),而服務則是由網際網路資訊服務 (IIS) 裝載。
注意: |
---|
此範例的安裝程序與建置指示位於本主題的結尾。 |
這個範例是以實作計算機服務的使用者入門範例為基礎。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 範例中的指示。
若要在單一或跨電腦的組態中執行本範例,請遵循執行 Windows Communication Foundation 範例中的指示。
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.