繁体   English   中英

WCF服务端超时未执行

[英]WCF Service Side Timeout not executing

我有一个配置为使用basichttpbinding的WCF服务。我想测试服务器端超时,但是在更改配置时看不到任何更改。

这是我的绑定:

    <binding name="DefaultBasicBinding" closeTimeout="00:00:30" openTimeout="00:00:30" sendTimeout="00:00:30" maxBufferSize="4194304" maxBufferPoolSize="4194304" maxReceivedMessageSize="4194304">
      <readerQuotas maxDepth="100" maxStringContentLength="1000000" maxArrayLength="1000000" maxBytesPerRead="1000000" />
    </binding>

我已经研究了很多,无法使其正常工作。 我正在使用wcf测试客户端来调用有问题的服务,该服务的客户端超时时间为10分钟。

我也有一种服务行为,该行为具有30秒的事务超时。 该服务托管在本地IIS中,其中将编译调试设置为false,将httpruntime执行超时设置为30秒。

    <httpRuntime executionTimeout="30" maxRequestLength="67108864"/>

我的服务呼叫持续存在一项服务,该服务最终会调用1分半钟的定时存储过程。 每当我调用该服务时,它都会成功执行。

当我将发送超时更改为一分钟之内的任何时间时,都看不出任何区别。

似乎哪里都没有答案,而且我还读到WCF不支持服务端超时?

我需要这方面的帮助。 提前致谢。

该过程涉及四个超时值。 其中三个涉及客户端,而只有一个适用于服务器端。

客户端

openTimeout:尝试打开与WCF的连接时超时将开始。
closeTimeout:尝试关闭与WCF的连接时超时将开始。
sendTimeout:这是超时,它指定客户端可以等待多长时间来完成传输数据写入,直到引发异常。

服务器端

ReceiveTimeout:这是超时,用于指定从接收请求开始到消息被处理,服务可以等待多长时间。 这是服务器端设置。 当您向服务发送大消息并且服务需要长时间处理时,您将需要增加此设置。

如果我理解正确,那么您需要在服务器端使用RecieveTimeout才能达到所需的结果。

绑定超时旋钮的简要说明...

客户端:

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

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

从这篇文章 看看并重新检查您的配置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM