13

还没有遇到过这个有相当多的谷歌搜索。

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

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

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

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

最初我们打算使用 Windows 服务。现在我们正在使用 WAS。WAS 有什么不同吗?每个“每次调用”请求仍将获得它自己的“服务器”作为管道操作吗?

谢谢

4

3 回答 3

10

您无法使用开箱即用的功能在 web.config 中进行更改InstanceContextMode,但您可以编写自定义扩展(行为或自定义++配置部分)来执行此操作。这是示例如何更改而不在服务类的属性中定义它。ConcurrencyModeServiceHostServiceHostFactoryInstanceContextMode

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

于 2011-04-26T08:05:30.507 回答
1

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

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

于 2011-04-26T08:01:26.590 回答
1

根据之前的答案,如果不做一些工作,您将无法做到这一点。我最近不得不为一位客户做这件事,我在这里记录了它。我还提供了一个验证器,如果服务没有按照您的意愿进行配置,则不允许启动该服务。详细信息在这里changed-wcf-concurrency-programatically

于 2013-05-19T21:54:20.197 回答