WCF灾难性失败

时间:2009-10-06 00:13:04

标签: wcf crash

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

设置

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

柠檬

在一些用户选择改变后,即。为了从数据服务中调用更多依赖数据,应用程序停止响应。

  

崩溃错误:

     

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

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

  

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

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

可能的解决方案

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

  1. maxReceivedMessageSize>设置为更高的值,例如。 5242880。
  2. receiveTimeout>设置为更高的值,例如。 00:30:00
  3. 我试过这些但都是徒劳的。我怀疑只是通过改变一些数字就无法修复潜在的问题。任何线索都会非常感激。

2 个答案:

答案 0 :(得分:6)

我已经解决了它= P。

<强>原因

WCF服务正常。这是数据服务电话的罪魁祸首。每次拨打电话时,我都会实例化对数据服务的新引用,但从不关闭/处理服务引用。因此,在几次调用之后,数据服务达到其最大连接并停止。

<强>解决方案

确保正确关闭/处置任何数据服务引用。最佳做法是附上一份使用声明。

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

答案 1 :(得分:4)

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

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

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