1

WCFを介してASP.NET MVCからすべての注文とOrderDetailsを取得すると、エラーが発生します。私は同じPOCOを使用したいEF with WCF:基になる接続が閉じられました:予期せず接続が閉じられました

The underlying connection was closed: The connection was closed unexpectedly.

  1. 私は遅延ロードに

  2. を使用していない:サービスまで、それは、コールが、この場合のサービスのうち、MVCに到達したときにのみ、それはエラーをスローし、正常に動作しますWCFでDataContractを個別に作成する必要はありません。

マイコード:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     ServiceReference1.Service1Client service = new ServiceReference1.Service1Client(); 
     var allOrders = service.GetAllOrders(); 
     service.Abort(); 
     return View(); 
    }  
} 

// WCF Service Method 
public List<Order> GetAllOrders() 
{ 
    List<Order> orders = null; 
    using (NorthwindEntities context = new NorthwindEntities()) 
    { 
     orders = context.Set<Order>().Include("Order_Details").AsEnumerable().ToList(); 
    } 

    return orders; 
} 

public class Order 
{ 
    public Order() 
    { 
     this.Order_Details = new HashSet<Order_Detail>(); 
    } 

    public virtual ICollection<Order_Detail> Order_Details { get; set; } 
    } 

public class Order_Detail 
{ 
    public int OrderID { get; set; } 
    public int ProductID { get; set; } 
    public decimal UnitPrice { get; set; } 
    public short Quantity { get; set; } 
    public float Discount { get; set; } 
} 
+1

Order_Detail POCOにオーダーというナビゲーションプロパティがありますか?もしそうなら、あなたは一瞬それを取り除き、もう一度やり直すことができますか?私は、WCFで使用されるJsonシリアライザは、循環参照を扱うことができないと思います。 –

+0

いいえ、私はorder_detailエンティティのorderプロパティを持っていません。上記のコードブロックを更新しました。 –

+0

NorthwindEntitiesの設定を投稿してください。 Configuration.ProxyCreationEnabledは真ですか? –

答えて

6

アレックスのおかげで

ProxyCreationEnabledを無効にした後で機能します。

public List<Order> GetAllOrders() 
    { 
     List<Order> orders = null; 

     using (NorthwindEntities context = new NorthwindEntities()) 
     { 
      context.Configuration.ProxyCreationEnabled = false; 
      orders = context.Set<Order>().Include("Order_Details").AsEnumerable().ToList(); 
      context.Configuration.ProxyCreationEnabled = true; 

     } 

     return orders; 
    } 
0

これはおそらくタイムアウトの問題です。推測では、以下のとおり、のhttpRuntime要素でexecutionTimeoutプロパティを設定してみてください -

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

+0

が指定された最大タイムアウト時間。それでもそれはスローされます。 dbには膨大なデータがありません。 efデータのロードが迅速に完了します。 –

0

結果メッセージがデフォルトの制限に応じてクライアントに送り返すには大きすぎるBOことがあります。

WCFトレースログを使用して、何がうまくいかなかったかを調べることができます。リンクthisを参照してください。

関連する問題