WCF-“底层连接已关闭:连接意外关闭”
在我的WCF Web服务上使用我的webmethods之一时,我收到了这个模糊不清的错误消息。因为这个错误信息没有提供任何解释让我发表我的理论。WCF-“底层连接已关闭:连接意外关闭”
我认为它可能有一些做的返回类型我使用
我这是在Web服务端和客户端refrenced一个类型DLL。在这个DLL中是基类ExceptionMessages。这个类有一个名为DrawingExcepions的孩子。
下面是一些代码:
public class ExceptionMessages
{
public object[] ReturnValue { get; set; }
}
public class DrawingExceptions : ExceptionMessages
{
private List<DrawingException> des = new List<DrawingException>();
}
public class DrawingException
{
public Exception ExceptionMsg { get; set; }
public List<object> Errors { get; set; }
}
的使用代码:
[OperationContract]
ExceptionMessages createNewBom(Bom bom, DrawingFiles dfs);
public ExceptionMessages createNewBOM(Bom bom, DrawingFiles dfs)
{
return insertAssembly(bom, dfs);
}
public DrawingExceptions insertAssembly(Bom bom, DrawingFiles dfs)
{
DrawingExceptions des = new DrawingExceptions();
foreach (DrawingFile d in dfs.drawingFiles)
{
DrawingException temp = insertNewDrawing(bom, d);
if (temp != null)
des.addDrawingException(temp);
if (d.Child != null)
des.addDrawingException(insertAssembly(bom, d.Child));
}
return des;
}
返回到:
ExceptionMessages ems = client.createNewBom(bom, currentDFS);
if (ems is DrawingExceptions) { }
基本上是从的WebMethod返回类型为ExceptionMessages但是我通常会而不是发送孩子班。
我唯一的想法是,这是导致错误的孩子,但据我所知,这应该没有效果。有没有人有任何想法在这里可能会出错?
如果需要任何更多的信息,只问:)
感谢。
我在返回一个大的有效负载时出现这个错误,结果证明DataContractSerialiser停止了中间流,因为它已经达到了默认的maxItemsInObjectGraph设置,将以下事件添加到我的端点行为可以解决问题。
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
我有同样的问题,我作为一个可能的解决方案来到我的WCF服务有超时错误。在我的情况下,斯奎格的回答提供了关于潜在状况的线索。虽然容易提高最大有效载荷的大小,但显然这是一个具有性能影响的选项。
就我而言,我上传的对象图保存,然后将更新的对象返回到我的客户,所以我可以跟踪外键等。对于我的问题的问题是怎么会已经变得如此回程更大。我挖了一遍,它让我感到,扩展的有效载荷大小的根本原因是,当我将一个子对象添加到我的对象图中时,这些子对象的导航属性添加了对父对象的引用,如此等等。
我去了我的edmx文件,从违规的子对象中删除了导航属性,我的包大小被驯服了。
希望这可以帮助别人!
我刚刚有同样的问题,但没有上述答案解决了这个问题。
我正在带回一个LINQ对象列表,数据库的所有关系正确设置,导致对象与LINQ自动链接...这是停止查询工作。
我通过从LINQ DBML中删除关系来解决此问题
这是我在200声望中读到的最有用答案。 – Qqbt 2013-07-10 20:14:01