2012-04-11 55 views
0

最初,我从我的控制器调用了我的Web服务中的函数,然后对结果进行分页,仅在我的视图中显示10个项目。我继续像这样:当调用WCF函数时,消息'底层连接已关闭'

控制器:

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

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

底层连接已关闭:预计将保持活动状态的连接已由服务器关闭。

任何想法?为什么我的代码中的这个改变给了我这个错误?

我没有改变任何东西。

谢谢。


UPDATE

这里是为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); 
    } 

回答

0

我建议检查是否通过返回的数据量该呼叫可能会超过ReaderQuo中定义的限制tas你的绑定元素。

+0

我只返回10个项目>>我没有这样的问题。不管怎么说,还是要谢谢你。我认为问题是我的分页不是可序列化的,但我不知道如何调整。不管怎么说,还是要谢谢你。 – Bronzato 2012-04-11 09:35:22

相关问题