【问题标题】:Handle timeouts in WCF service处理 WCF 服务中的超时
【发布时间】:2014-02-19 19:06:07
【问题描述】:

我想知道在 WCF 服务中处理超时的正确方法是什么。

我有一个使用会话的服务。客户端执行连接、各种调用(当用户与客户端应用程序交互时),然后在某些时候执行断开连接。 Disconnect 操作在服务器上执行清理(例如释放 COM 对象)。但是,客户端可以(异常地)终止(由于各种原因)而不调用 Disconnect。 receiveTimeout 过期后,服务将中止。我需要以一种允许我正确清理会话的方式来处理这个问题。我该怎么做?

有我可以处理的事件吗?我可以用它实现和自定义服务的接口?我已经看过了,但没有找到任何东西。 IErrorHandler 对超时没有帮助。

我想到了每次调用服务时都会重置服务上的计时器。当计时器过去时,客户端被认为已断开连接,服务可以清理会话。这合适吗? (这个间隔应该总是小于绑定的receiveTimeout。)

【问题讨论】:

    标签: wcf service error-handling timeout


    【解决方案1】:

    根据http://msdn.microsoft.com/en-us/library/ff183865.aspx,默认情况下,WCF 会话会在 10 分钟或任何 receiveTimeout 指定的时间后超时。如果您的服务类实现了 IDisposable,我相信此时应该调用 Dispose(),这将为您提供第二次/最后一次清理任何未完成资源的机会。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-23
      • 2010-09-18
      • 2013-01-15
      • 2022-07-29
      • 2011-01-14
      • 2010-10-29
      相关资源
      最近更新 更多