【问题标题】:Timeouts WCF Services超时 WCF 服务
【发布时间】:2010-09-18 18:56:24
【问题描述】:

超时如何在 WCF 中工作?例如,我知道您可以为客户端绑定配置 sendTimeoutreceiveTimeout。但是它们是如何工作的呢?

MSDN 将 sendTimeout 描述为:

一个 TimeSpan 值,它指定为一个提供的时间间隔 发送操作完成。此值应大于或等于 归零。默认为 00:01:00。

什么是发送操作/接收操作?

【问题讨论】:

    标签: wcf configuration timeout wcf-binding


    【解决方案1】:

    客户端:

    • SendTimeout 用于初始化 OperationTimeout,它控制发送消息的整个交互(包括在请求-回复情况下接收回复消息)。从 CallbackContract 方法发送回复消息时,此超时也适用。
    • OpenTimeout 和 CloseTimeout 用于打开和关闭通道(当没有传递明确的超时值时)。
    • 没有使用ReceiveTimeout。

    服务器端:

    • 发送、打开和关闭超时与客户端相同(用于回调)。
    • ServiceFramework 层使用ReceiveTimeout 来初始化会话空闲超时。

    来源是Brian McNamara on MSDN forums

    【讨论】:

    • 如果我将 OperationTimeout 设置为一个非常高的值,并将 sendTimeout 设置为一个非常小的值,本质上应该超时,我永远不会遇到超时异常。谁能告诉我如何设置一个触发 sendTimeout 异常的示例?
    • 我的 WCF 服务复制文件并返回有关进度的回调。时间到了。阅读此答案后,我增加了除 ReceiveTimeout 之外的所有超时值,尽管 WCF 错误消息说会增加 ReceiveTimeout。那没有用。至少在我的情况下,有效的方法是增加 ReceiveTimout。
    • 我发现这个话题太笼统了:部署在 Cassic vs Integrated Pipeline 中的 WCF 暴露了不同的超时行为。这个答案可能满足像netTcpBinding这样的“本机”WCF,但是如果你在操作合同中执行一个很长的CPU绑定作业,那么在Httphandler管理的WCF(如basichttpbinding)的情况下,IIS可能会在closetimeout(服务器端)之前杀死WCF!在这种情况下,我建议修改 IIS Application Pool 超时 also ,ping 和关机超时
    • 只需明确OperationTimeout即可。根据我的测试,OpenTimeout和SendTimeout与另一端(即Serve端)业务逻辑层完成操作逻辑所用的时间无关。操作逻辑所花费的时间实际上是由 OperationTimeout 控制的。比如设置OpenTimeout为1分钟,OperationTimeout为2分钟,wcf客户端与服务器建立连接成功后,运行逻辑,然后db需要3分钟,现在不会导致OpenTimeout,但会导致 OperationTimeout。
    【解决方案2】:

    请参阅“WCF 中的超时及其默认值”http://blogs.msdn.com/b/hongmeig/archive/2010/03/06/timeouts-in-wcf-and-their-default-values.aspx

    绑定超时,接收超时, OpenTimeout 和 CloseTimeout。它们可以通过以下方式轻松设置 绑定上的配置或代码。这些的默认值为 1 分钟。

    ServiceHost 有 OpenTimeout 和 CloseTimeout。 OpenTimeout 的默认值 为 1 分钟,CloseTimeout 的默认值为 10 秒。

    客户端通道超时。有一个 OperationTimeout,它 您可以通过将频道转换为 IContextChannel 来设置它。默认 因为这也是 1 分钟。 tcp 传输上的 Ttimeout,称为 ChannelInitializationTimeout,默认为5秒。

    ASPNET。有shutdown timeout,就像服务主机close 超时,默认为 90 秒。 ExecutionTimeout,就像我们的 操作超时,默认110秒。

    【讨论】:

      【解决方案3】:

      除了该帖子中的内容之外,还有在客户端定义的操作超时。看到这个:

      http://final-proj.blogspot.com/2009/09/wcf-timeouts.html

      【讨论】:

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