使用 WCF 的 EF:基础连接已关闭:连接意外关闭

本文关键字:连接 意外 WCF EF 使用 | 更新日期: 2023-09-27 18:33:26

当我通过WCF从MVC检索所有订单及其订单详细信息时 ASP.NET 它抛出错误。 直到服务它工作正常,只有当调用停止服务时,在这种情况下 MVC,它才会抛出错误:

基础连接已关闭:连接意外关闭。

  1. 我没有使用延迟加载

  2. 我想使用相同的POCO类,不想在WCF中单独创建数据合同。

我的代码:

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; }
}

使用 WCF 的 EF:基础连接已关闭:连接意外关闭

感谢亚历克斯,

它在禁用代理创建启用后工作。

    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;
    }

这可能是超时问题。猜测一下,尝试在 httpRuntime 元素中设置 executionTimeout 属性,如下所示 -

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

结果消息可能太大,无法根据默认限制发送回客户端。

可以使用 WCF 跟踪日志找出出错的原因。请参阅此链接。