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);
}
我只返回10個項目>>我沒有這樣的問題。不管怎麼說,還是要謝謝你。我認爲問題是我的分頁不是可序列化的,但我不知道如何調整。不管怎麼說,還是要謝謝你。 – Bronzato 2012-04-11 09:35:22