在调用WCF函数时,消息'基础连接已关闭'

时间:2012-04-11 08:24:11

标签: asp.net asp.net-mvc wcf

最初,我从我的控制器调用了我的Web服务中的一个函数,接下来我将结果分页为仅在我的视图中显示10个项目。我继续这样做:

控制器:

    public ActionResult Index(int? page)
    {
        var companies = _requestServiceClient.GetCompanies();
        int currentPageIndex = page.HasValue ? page.Value - 1 : 0;
        var companiesListPaged = companies.ToPagedList(currentPageIndex, defaultPageSize);
        return View(companiesListPaged);
    }

服务:

    public IEnumerable<Company> GetCompanies()
    {
        using (var unitOfWork = UnitOfWorkFactory.Create())
        {
            var companyRepository = unitOfWork.Create<Company>();
            return companyRepository.GetAll().MyInclude(x => x.City).ToList();
        }
    }

所以在从我的服务中检索到所有数据之后完成了分页。它工作但传输了大量数据,因此效率不高。我改变了我的代码,直接在服务中进行分页工作,如下所示:

控制器:

    [Authorize]
    public ActionResult Index(int? page)
    {
        int currentPageIndex = page.HasValue ? page.Value - 1 : 0;
        var companies = _requestServiceClient.GetCompaniesToPagedList(currentPageIndex, defaultPageSize);
        return View(companies);
    }

服务:

    public IPagedList<Company> GetCompaniesToPagedList(int PageIndex, int PageSize)
    {
        using (var unitOfWork = UnitOfWorkFactory.Create())
        {
            var companyRepository = unitOfWork.Create<Company>();
            var companies = companyRepository.GetAll().MyInclude(x => x.City).ToList();
            return companies.ToPagedList(PageIndex, PageSize);
        }
    }

它编译但在运行时我得到错误:

基础连接已关闭:服务器已关闭预期保持活动状态的连接。

有什么想法吗?为什么我的代码中的这种变化会给我这个错误?

我没有改变任何其他事情。

感谢。


更新

这是IPagedList的代码

public interface IPagedList<T> : IList<T>
{
    int PageCount { get; }
    int TotalItemCount { get; }
    int PageIndex { get; }
    int PageNumber { get; }
    int PageSize { get; }
    bool HasPreviousPage { get; }
    bool HasNextPage { get; }
    bool IsFirstPage { get; }
    bool IsLastPage { get; }
}

ToPagedList

    public static IPagedList<T> ToPagedList<T>(this IEnumerable<T> source, int pageIndex, int pageSize, int? totalCount = null)
    {
        return new PagedList<T>(source, pageIndex, pageSize, totalCount);
    }

1 个答案:

答案 0 :(得分:0)

我建议检查调用返回的数据量是否超过绑定的ReaderQuotas元素中定义的限制。