C# WCF限制请求

C# WCF限制请求,c#,asp.net,wcf,C#,Asp.net,Wcf,我需要维护一个用WCF编写的旧服务。问题在于,在对服务进行负载测试时,请求似乎受到限制。在服务器端,每个呼叫平均需要250毫秒左右。如果我发送一个请求,它将在250毫秒多一点的时间内完成。如果我发送10个请求,前几个请求将立即完成,其他请求将在几秒钟内完成,其中秒数将随着请求数的增加而增加 我在这里的一个简单项目中复制了这个问题 服务在Service1.svc.cs中休眠250毫秒: async public Task<string> ExecuteMethod()

我需要维护一个用WCF编写的旧服务。问题在于,在对服务进行负载测试时,请求似乎受到限制。在服务器端,每个呼叫平均需要250毫秒左右。如果我发送一个请求,它将在250毫秒多一点的时间内完成。如果我发送10个请求,前几个请求将立即完成,其他请求将在几秒钟内完成,其中秒数将随着请求数的增加而增加

我在这里的一个简单项目中复制了这个问题

服务在Service1.svc.cs中休眠250毫秒:

    async public Task<string> ExecuteMethod()
    {
        await Task.Delay(250);
        return "Done";
    }
异步公共任务执行方法()
{
等待任务。延迟(250);
返回“完成”;
}
并且,客户端创建100个线程来调用该方法。这些调用似乎没有并行执行。所有线程同时启动,但有些线程在20秒以上完成

有趣的是,我使用这里提供的WebApi创建了一个类似的项目,其行为是我所期望的——所有100个线程几乎立即启动,所有线程在大约260毫秒内完成——这是预期的行为

WCF服务似乎被限制或阻止执行许多并发请求。有没有办法使WCF版本的行为与WebApi版本类似——同时处理所有请求


谢谢。

这是客户端问题--我必须在对服务执行多线程调用之前调用client.Open()。

您可以尝试添加ServiceBehavior属性,以使用并发模式同时处理多条消息。对于并发模式,您可以参考: