2010-05-21 190 views
5

在我的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但是我通常會而不是發送孩子班。

我唯一的想法是,這是導致錯誤的孩子,但據我所知,這應該沒有效果。有沒有人有任何想法在這裏可能會出錯?

如果需要任何更多的信息,只問:)

感謝。

回答

4

是的,這個消息是偉大的:)

我經常發現它有助於啓用跟蹤,如this article描述。查看「部署或調試的推薦設置」部分。

2

我在返回一個大的有效負載時出現這個錯誤,結果證明DataContractSerialiser停止了中間流,因爲它已經達到了默認的maxItemsInObjectGraph設置,將以下事件添加到我的端點行爲可以解決問題。

<dataContractSerializer maxItemsInObjectGraph="2147483647" /> 
2

我有同樣的問題,我作爲一個可能的解決方案來到我的WCF服務有超時錯誤。在我的情況下,斯奎格的回答提供了關於潛在狀況的線索。雖然容易提高最大有效載荷的大小,但顯然這是一個具有性能影響的選項。

就我而言,我上傳的對象圖保存,然後將更新的對象返回到我的客戶,所以我可以跟蹤外鍵等。對於我的問題的問題是怎麼會已經變得如此回程更大。我挖了一遍,它讓我感到,擴展的有效載荷大小的根本原因是,當我將一個子對象添加到我的對象圖中時,這些子對象的導航屬性添加了對父對象的引用,如此等等。

我去了我的edmx文件,從違規的子對象中刪除了導航屬性,我的包大小被馴服了。

希望這可以幫助別人!

+0

這是我在200聲望中讀到的最有用答案。 – Qqbt 2013-07-10 20:14:01

0

我剛剛有同樣的問題,但沒有上述答案解決了這個問題。

我正在帶回一個LINQ對象列表,數據庫的所有關係正確設置,導致對象與LINQ自動鏈接...這是停止查詢工作。

我通過從LINQ DBML中刪除關係來解決此問題

相關問題