InstanceContextMode 列舉
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
指定可用於處理內送訊息中所含呼叫的服務實例數目。
public enum class InstanceContextMode
public enum InstanceContextMode
type InstanceContextMode =
Public Enum InstanceContextMode
- 繼承
欄位
| 名稱 | 值 | Description |
|---|---|---|
| PerSession | 0 | 每個會話都會建立一個新的 InstanceContext 物件。 若通道不建立會話,該值的行為就如 PerCall同 。 |
| PerCall | 1 | 在每次呼叫前會建立一個新 InstanceContext 物件,並在每次呼叫後回收。 |
| Single | 2 | 所有來電只使用一個 InstanceContext 物件,通話結束後不會重複使用。 如果服務物件不存在,則會建立一個。 |
範例
以下程式碼說明如何設定 InstanceContextMode 服務類別:
// Service class which implements the service contract.
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)]
public class CalculatorService : ICalculator
{
public double Add(double n1, double n2)
{
return n1 + n2;
}
public double Subtract(double n1, double n2)
{
return n1 - n2;
}
public double Multiply(double n1, double n2)
{
return n1 * n2;
}
public double Divide(double n1, double n2)
{
return n1 / n2;
}
}
' Service class which implements the service contract.
Public Class CalculatorService
Implements ICalculator
Public Function Add(n1 As Double, n2 As Double) As Double Implements ICalculator.Add
Return n1 + n2
End Function
Public Function Subtract(n1 As Double, n2 As Double) As Double Implements ICalculator.Subtract
Return n1 - n2
End Function
Public Function Multiply(n1 As Double, n2 As Double) As Double Implements ICalculator.Multiply
Return n1 * n2
End Function
Public Function Divide(n1 As Double, n2 As Double) As Double Implements ICalculator.Divide
Return n1 / n2
End Function
End Class
備註
該 System.ServiceModel.InstanceContext 類別負責管理通道與使用者定義服務物件之間的關聯。 使用 InstanceContextMode 帶有屬性 ServiceBehaviorAttribute.InstanceContextMode 的枚舉來指定物件的 InstanceContext 壽命。 Windows 通訊基礎(WCF)可以為每個呼叫、每個會話建立一個新 InstanceContext 物件,或指定 InstanceContext 該物件綁定於單一服務物件。 作為一個工作範例,請參見 實例化。
該 Single 值指定服務期間應使用單一 InstanceContext 物件。 數值有 Single 幾項注意事項:
若 ServiceBehaviorAttribute.InstanceContextMode 值設為
Single,除非你也將值設 ConcurrencyMode 為 ConcurrencyMode.Multiple,否則服務一次只能處理一則訊息。對於單例生命週期行為(例如,當主機應用程式呼叫 ServiceHost.ServiceHost 建構子並傳遞一個物件作為服務時),服務類別必須設 ServiceBehaviorAttribute.InstanceContextMode 為
Single,否則當服務主機被開啟時會拋出例外。