如何限制IIS中WCF服务的实例数?

Jad*_*ias 1 .net iis wcf iis-7

我的WCF服务多次实例化,直到系统内存不足为止?如何在IIS 7中设置单个实例?

我的WCF服务已经设置为单个实例的属性,但IIS似乎忽略了这一点:

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

mar*_*c_s 5

可以将WCF服务定义为单例 - 我建议不要这样做.你会遇到很多麻烦 - 性能和扩展问题,要解决这些问题,你必须处理多线程,线程安全的编程 - 所有这些都非常混乱.

你应该做的是使用每次呼叫实例化设置,并将你的服务器限制在你认为合理的任何地方.有一种称为"serviceThrottling"的服务行为,它允许您定义诸如要允许的服务类的并发实例数,要处理的并发调用数等内容.

默认情况下,这些值设置得相当低,如果你有一个装备精良的服务器,你可以轻松地将它们调高一些.您可以在服务器的web.config中定义它,如下所示:

<behaviors>
    <serviceBehaviors>
        <behavior name="throttled">
            <serviceThrottling
                maxConcurrentCalls="16"
                maxConcurrentInstances="26"
                maxConcurrentSessions="10" />
        </behavior>
    </serviceBehaviors>
</behaviors>
Run Code Online (Sandbox Code Playgroud)

(以上值是默​​认值)

阅读这些优秀的博客文章,了解服务限制及其所有细节: