在web.confg中设置WCF InstanceContextMode(Per Call,Single)

wcf*_*ful 13 wcf instancecontextmode

有一点谷歌搜索没有遇到这个.

我知道我可以通过装饰类名来设置实例:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, 
                 ConcurrencyMode = ConcurrencyMode.Multiple)]
Run Code Online (Sandbox Code Playgroud)

但是我可以在web.config文件中指定这个吗?

我知道我可以在web.config /中指定限制(最大并发用户等)app.config并且这里的数字具有取决于实例模式的上下文 - 但是如何指定模式(很可能是app.config/ 的行为部分web.config)?

最初我们打算使用Windows服务.现在我们正在使用WAS.是否有任何区别 - 例如.每个'每次调用'请求仍然会将它自己的'服务器'作为管道操作?

谢谢

Lad*_*nka 10

您不能更改InstanceContextMode,并ConcurrencyMode在开箱即用的功能,但web.config中,你可以写你的自定义扩展(行为或定制ServiceHost+ ServiceHostFactory+配置部分)做到这一点.下面是如何更改InstanceContextMode而不在服务类的属性中定义它的示例.

WAS中的处理是相同的 - 每种服务类型仍然有自己的服务主机,每个请求都在自己的线程中处理.


小智 1

你不能在配置文件中配置InstanceContextMode和ConcurrencyMode,在WCF中内置限制,我相信MS有他们的原因。

关于在 WAS 中托管,如果您有一个使用 IIS 7/7.5 的 Web 服务器,建议使用 WAS 托管您的服务,因为您可以使用 IIS 管理来管理您的服务并从中获得许多内置功能。