Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何配置WCF服务以在PerCall实例上下文中运行?_Wcf_Instancecontextmode - Fatal编程技术网

如何配置WCF服务以在PerCall实例上下文中运行?

如何配置WCF服务以在PerCall实例上下文中运行?,wcf,instancecontextmode,Wcf,Instancecontextmode,这是背景信息。我有一个像这样配置的WCF服务 [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] 现在我需要一些帮助来准确理解这个上下文模式是如何工作的 这是我正在处理的问题。为了便于讨论,假设我有一个调用,它需要10秒钟才能执行并从服务器返回。如果我同时发出两个调用(使用Ajax请求),第一个请求将在10秒后返回。但是第二个请求将在20秒后返回 我希望这个上下文模式能够独立处理这两个请求,并同时返回这

这是背景信息。我有一个像这样配置的WCF服务

   [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
现在我需要一些帮助来准确理解这个上下文模式是如何工作的

这是我正在处理的问题。为了便于讨论,假设我有一个调用,它需要10秒钟才能执行并从服务器返回。如果我同时发出两个调用(使用Ajax请求),第一个请求将在10秒后返回。但是第二个请求将在20秒后返回


我希望这个上下文模式能够独立处理这两个请求,并同时返回这两个请求。我是否正确配置了我的服务?

PerCall
中,每个调用都被分配了一个单独的实例(以实现极高的可扩展性)。对该方法的每次调用都会导致创建一个新的服务器对象(单独的线程)。一旦请求被处理(方法返回),新实例就被释放

如果您将该方法配置为使用
ConcurrencyMode.Single
,那么您将看到这种阻塞行为

您应该考虑查看配置,以确保应用程序被正确调整。

<serviceBehaviors>
    <behavior name="throttleBehavior">
        <serviceThrottling maxConcurrentCalls="15" maxConcurrentInstances="10"/>
    </behavior>
</serviceBehaviors>

以下配置

[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall)]

可能并不总是为每个调用立即创建服务上下文。如果使用的绑定已启用会话,并且服务实现IDispose,则当已经存在另一个客户端的服务实例时,客户端调用将排队。因此,请检查案例中的绑定详细信息