【问题标题】:WCF Service , Request or increase the SendTimeout value on the BindingWCF 服务,请求或增加 Binding 上的 SendTimeout 值
【发布时间】:2012-05-04 13:27:53
【问题描述】:

我随机遇到此问题,我可以使用 WCFServiceClient 添加/删除/更新,然后我得到错误及其随机发生...

下面是我正在使用的客户端代码...

using(WCFServiceClient client = new WCFServiceClient ()) 
{ 
     //More codes here 
     Employee emp = new Employee()
     emp = client.GetEmployeeDataById(123); //<<<ERROR    
}

我将超时时间增加到两分钟,但还是一样:

<binding name="WSHttpBinding_IEmployeeService" maxReceivedMessageSize="200000" sendTimeout="00:02:00" >

//错误:

请求通道在 00:00:59.9990000 之后等待回复时超时。增加传递给 Request 调用的超时值或增加 Binding 上的 SendTimeout 值。分配给此操作的时间可能是较长超时的一部分。

有什么帮助吗?我看过很多帖子,但似乎没有任何修复或指导。

【问题讨论】:

  • 您在发出请求时是否尝试过调试实际服务?还要确保无论您在服务器上设置的超时时间增加多少,您在客户端上设置的时间也是如此。
  • 我的服务器服务上没有任何app.config,我需要创建吗?
  • 您的客户端连接到的服务定义了您的客户端与之交互的合同和绑定参数。如果您的服务器将超时设置为 x 并且您的客户端将其设置为原因,则服务器设置将是使用的设置。

标签: wcf wcf-data-services wcf-binding wcf-client


【解决方案1】:

您可以尝试显式绑定选择以消除您可能会选择默认(简化配置)绑定的情况

new WCFServiceClient ("WSHttpBinding_IEmployeeService")

【讨论】:

  • 我按照您的建议尝试了显式绑定,但仍然相同,并且在浏览我的应用程序几分钟后出现错误。
  • 你能解释一下“浏览我的应用程序”是什么意思吗?
  • 好吧,我的意思是我正在使用提供大量方法的服务,例如保存、获取、删除等......在我的客户端应用程序中,我正在使用这些服务,一切正常正如预期的那样,在浏览应用程序(正在使用服务)几分钟后,我收到了错误,我在我的原始帖子中发布了该错误。我希望它有意义。
【解决方案2】:

阅读此链接后能够解决我的问题。

避免 Using 语句的问题 http://msdn.microsoft.com/en-us/library/aa355056.aspx

C#“使用”语句导致调用 Dispose()。这和Close()一样,发生网络错误时可能会抛出异常。因为对 Dispose() 的调用隐式发生在“使用”块的右大括号处,所以编写代码和阅读代码的人都可能不会注意到这个异常源。这代表了应用程序错误的潜在来源。

【讨论】:

    【解决方案3】:

    我不知道你到达那里的数据有多大,但是 receiveTimeout 呢?

    【讨论】:

    • 我用少于 10 个字符进行测试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多