没有用谷歌搜索来看这个。
我知道我可以通过装饰类名来设置实例:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall,
ConcurrencyMode = ConcurrencyMode.Multiple)]
但是我可以在web.config
文件中指定吗?
我知道我可以在web.config
/ app.config
中指定限制(最大并发用户数等),并且这里的数字具有取决于实例模式的上下文 - 但是如何指定模式(在最有可能是app.config
/ web.config
)的行为部分?
最初我们打算使用Windows服务。现在我们正在使用WAS。是否有任何区别 - 例如。每个'每次调用'请求仍然会将它自己的“服务器”作为管道操作吗?
由于
答案 0 :(得分:10)
您无法在web.config中更改InstanceContextMode
和ConcurrencyMode
,但您可以编写自定义扩展程序(行为或自定义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。