C# 计算服务合同中的用户请求
我正在开发一个WCF服务,它一次只能处理一个用户请求。其他请求必须排队,如果队列变大,则其他请求存储在数据库中,并相应地通知用户。我可以通过在WCF中实现服务节流来获取用户队列,但当队列较长时,用户会收到请求超时错误。对于请求限制,我在服务契约2上使用了WCF服务限制C# 计算服务合同中的用户请求,c#,.net,web-services,wcf,throttling,C#,.net,Web Services,Wcf,Throttling,我正在开发一个WCF服务,它一次只能处理一个用户请求。其他请求必须排队,如果队列变大,则其他请求存储在数据库中,并相应地通知用户。我可以通过在WCF中实现服务节流来获取用户队列,但当队列较长时,用户会收到请求超时错误。对于请求限制,我在服务契约2上使用了WCF服务限制 [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Single)] 但是对于
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Single)]
但是对于服务合同1,我已经实现了
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode = ConcurrencyMode.Multiple)]
我尝试计算来自WCF节流服务的挂起请求,但似乎没有这样的方法可以给出WCF中的当前队列列表
是否有任何方法可以计算其他服务中的队列列表
合同
我是否必须更改设计以在WCF服务中实现此流。
在IIS管理器的“应用程序池->高级设置”下,您可以根据需要将队列长度设置为更大的值:
设置队列长度不允许我在运行时计算队列中当前的请求数。唯一的其他建议是将service contract 2中的所有请求放在db或arraylist中,然后查询记录数。是的,我也尝试过实现,但因为它一次只处理一个请求,所有其他请求都必须处于搁置状态,因为我也必须实现直接下载功能。如果不需要直接下载,我可以执行DB实现并一次处理一个请求。另一个选项是在运行时捕获并存储用户请求,对其进行处理并将其放入结果表中,然后实现用户响应函数。但我不知道如何在WCF中捕获用户请求并手动发送响应。