【问题标题】:WCF Catastrophic FailureWCF 灾难性故障
【发布时间】:2010-12-04 03:04:51
【问题描述】:

我手上有一个真正的柠檬。我希望有同样问题或知道如何解决它的人可以为我指明正确的方向。

设置

我正在尝试创建一个 WCF 数据服务,该服务使用 ADO 实体框架模型从数据库中检索数据。我添加了 WCF 服务参考,一切看起来都很好。我有两组数据服务调用。第一个检索所有“用户”的列表并返回(此列表不包括任何相关数据(例如,地址,触点等)。第二个呼叫是选择“用户”时,应用程序请求包括“用户”给定用户 ID 的一些其他相关信息,例如地址、联系方式、消息等。这似乎也可以正常工作。

柠檬

在一些用户选择更改后,即。从数据服务调用更多相关数据,应用程序停止响应。

崩溃错误:

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

我重新启动调试过程,但应用程序不会进行任何数据服务调用,直到大约一分钟左右,VS 08 显示一个错误消息框:

无法处理来自服务的请求。 'http://localhost:61768/ConsoleService.svc'。灾难性的失败。

我已经用谷歌搜索了这个错误和相关问题,但没有发现任何用处。

可能的解决方案

我找到了一些关于问题根源的线索。在客户端的 app.config 中:

  1. maxReceivedMessageSize > 设置为更高的值,例如。 5242880。
  2. receiveTimeout > 设置为更高的值,例如。 00:30:00

我已经尝试过这些,但都是徒劳的。我怀疑存在一个根本问题,不能通过简单地更改一些数字来解决。任何线索将不胜感激。

【问题讨论】:

    标签: wcf crash


    【解决方案1】:

    我已经解决了=P。

    原因

    WCF 服务工作正常。罪魁祸首是数据服务调用。每次进行调用时,我都会实例化对数据服务的新引用,但从未关闭/处置服务引用。因此,在几次调用之后,数据服务达到最大连接并停止。

    解决方案

    确保正确关闭/处置任何数据服务引用。最佳做法是包含在 using 语句中。

    using(var dataService = new ServiceNS.ServiceClient() )
    {
        // Use service here        
    }
    // The service will be disposed and connection freed.
    

    【讨论】:

    • 以客户端为属性并使用异步服务引用的单例模式是否会产生问题???
    【解决方案2】:

    很高兴看到您解决了问题。

    但是,您需要小心使用 using 语句。看看这篇文章:

    http://msdn.microsoft.com/en-us/library/aa355056.aspx

    【讨论】:

      猜你喜欢
      • 2016-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-18
      • 1970-01-01
      相关资源
      最近更新 更多