2012-04-11 14 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で定義された制限を超えている可能性がありますあなたのバインディングの要素。

+0

私は10アイテムしか返しません>>私はそのような問題はありません。とにかくありがとう。問題は私のページネーションはシリアライズ可能ではありませんが、調整する方法はわかりません。とにかくありがとう。 – Bronzato

関連する問題