InstanceContextMode 枚举
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
指定可用来处理包含在传入消息中的调用的服务实例数。
public enum class InstanceContextMode
public enum InstanceContextMode
type InstanceContextMode =
Public Enum InstanceContextMode
- 继承
字段
PerCall | 1 | 新的 InstanceContext 对象在每次调用前创建,在调用后回收。 |
PerSession | 0 | 为每个会话创建一个新的 InstanceContext 对象。 如果信道未创建会话,则该值的行为就如同 PerCall 一样。 |
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
,否则当打开服务主机时会引发异常。