1

WCFを介してASP.NETMVCからすべての注文とそのOrderDetailsを取得すると、エラーがスローされます。サービスが正常に機能するまで、呼び出しがサービスを停止した場合にのみ、この場合はMVCで、エラーがスローされます。

基になる接続が閉じられました:接続が予期せず閉じられました。

  1. 遅延読み込みを使用していません

  2. 同じPOCOクラスを使用したいのですが、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; }
}
4

3 に答える 3

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;
    }
于 2012-05-11T05:32:56.890 に答える
0

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

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

于 2012-05-07T07:16:19.960 に答える
0

結果のメッセージは、デフォルトの制限に従ってクライアントに送り返すには大きすぎる可能性があります。

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

于 2012-05-07T08:52:56.627 に答える