当调用WCF函数时,消息'底层连接已关闭'
问题描述:
最初,我从我的控制器调用了我的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);
}
答
我建议检查是否通过返回的数据量该呼叫可能会超过ReaderQuo中定义的限制tas你的绑定元素。
我只返回10个项目>>我没有这样的问题。不管怎么说,还是要谢谢你。我认为问题是我的分页不是可序列化的,但我不知道如何调整。不管怎么说,还是要谢谢你。 – Bronzato 2012-04-11 09:35:22