在web.config中设置WCF InstanceContextMode(Percall,Single)

时间:2011-04-26 06:24:26

标签: wcf instancecontextmode

没有用谷歌搜索来看这个。

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

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, 
                 ConcurrencyMode = ConcurrencyMode.Multiple)]

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

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

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

由于

3 个答案:

答案 0 :(得分:10)

您无法在web.config中更改InstanceContextModeConcurrencyMode,但您可以编写自定义扩展程序(行为或自定义ServiceHost + {{1} } + config部分)来做到这一点。 Here is the example如何更改ServiceHostFactory而不在服务类的属性中定义它。

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

答案 1 :(得分:1)

您无法在配置文件中配置InstanceContextMode和ConcurrencyMode,在WCF中构建限制,我确信MS有其原因。

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

答案 2 :(得分:1)

根据之前的答案,如果没有一点工作,你就无法做到这一点。我最近必须为客户做这件事,我在这里记录了它。我还提供了一个验证器,如果未按照您的要求配置服务,则不允许该服务启动。详情请见changing-wcf-concurrency-programatically