如何限制 WCF 服务的请求执行时间?

Posted

技术标签:

【中文标题】如何限制 WCF 服务的请求执行时间?【英文标题】:How to limit a request execution time of WCF service? 【发布时间】:2011-02-26 00:01:16 【问题描述】:

WCF 配置中是否有定义在服务端执行请求的超时时间?例如。 WCF 服务将在一段时间后停止执行请求。我有一项服务可以根据客户的输入进行一些工作。在某些情况下,这样的调用可能会花费太多时间。我想在服务端限制此类请求的执行时间,而不是使用 SendTimeout 的客户端。我知道 OperationTimeout 属性,但它不会中止服务请求,它只是告诉客户端请求已超时。

【问题讨论】:

【参考方案1】:

一般来说,没有什么可以完全强制执行此操作。不幸的是,这是运行时无法真正很好地执行而不会使状态混乱的事情之一(几乎唯一的选择是中止正在运行的线程,这会产生很多不良后果)。

所以,基本上,如果这是您想要积极执行的事情,最好设计您的服务来处理这个问题,以便您的操作执行具有安全的中断点,如果最大执行时间已经达到,则可以终止操作已超过。

虽然工作量很大,但从长远来看,您可能会更满意。

【讨论】:

目前似乎没有其他解决方案。谢谢 +1 谢谢。很多地方都没有这个信息。 MS 似乎掩盖了 wcf 的整个超时机制。

以上是关于如何限制 WCF 服务的请求执行时间?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 WCF 中执行 SQL

WCF 服务缓存所有请求

WCF 在每个服务方法调用之前执行的一种方法

WCF 调用的 IIS 请求限制回收

WCF如何传递令牌进行身份验证?

C# WCF的通信模式