如果我没有在服务中指定InstanceContextMode
,那么默认的实例模式是什么?
答案 0 :(得分:25)
这是PerSession
答案 1 :(得分:1)
简单的答案是默认的Instancing模式为PerSession
本发明提供:
PerCall
。以下是Microsoft提供的示例,其中默认情况下在代码中进行了配置。 Default behavior sample
[ServiceBehavior(
AutomaticSessionShutdown=true,
ConcurrencyMode=ConcurrencyMode.Single,
InstanceContextMode=InstanceContextMode.PerSession,
IncludeExceptionDetailInFaults=false,
UseSynchronizationContext=true,
ValidateMustUnderstand=true)]
public class CalculatorService : ICalculator { ... }
我在微软的这篇文章(Using Sessions)中发现了关于会话的阅读,特别是了解如何打开和关闭Sessions以及它与Instancing和Concurrency的关系。
默认情况下,WCF客户端将创建一个新会话,该会话将创建一个服务器实例,会话持续时间内的所有调用称为会话,并由单个线程服务器的单个实例(Instancing)提供服务(并发)专用于该会话/客户端/会话。
如果在WCF中使用默认的实例化行为,则WCF客户端对象之间的所有调用都由同一服务实例处理。因此,在应用程序级别,您可以将会话视为启用类似于本地调用行为的应用程序行为。例如,在创建本地对象时:
调用构造函数。
对WCF客户端对象引用的所有后续调用都由同一对象实例处理。
在销毁对象引用时调用析构函数。
只要使用默认服务实例行为,会话就会在客户端和服务之间启用类似的行为。
希望这可以帮助别人,因为我花了一些时间才找到答案。
答案 2 :(得分:0)
默认情况下,并非所有绑定都支持PerSession
模式,例如支持basicHttpBinding
模式的Percall
。