InstanceContextMode 枚举
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
指定可用于处理传入消息中包含的调用的服务实例数。
public enum class InstanceContextMode
public enum InstanceContextMode
type InstanceContextMode =
Public Enum InstanceContextMode
- 继承
字段
| 名称 | 值 | 说明 |
|---|---|---|
| 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 Communication Foundation (WCF)可以为每个调用、每个会话创建一个新 InstanceContext 对象,或指定该 InstanceContext 对象绑定到单个服务对象。 有关工作示例,请参阅 实例化。
该值 Single 指定单个 InstanceContext 对象应用于服务的生存期。 几个注意事项与 Single 值相关联:
ServiceBehaviorAttribute.InstanceContextMode如果值设置为
Single,则服务一次只能处理一条消息,除非你也将该值ConcurrencyMode.Multiple设置为 ConcurrencyMode 。对于单一实例生存期行为(例如,如果主机应用程序调用ServiceHost.ServiceHost构造函数并传递要用作服务的对象),则服务类必须设置为ServiceBehaviorAttribute.InstanceContextMode
Single,或者在打开服务主机时引发异常。