2012-04-11 144 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

相關問題