我试图暴露一个IQueryable<>通过ASP.NET Web API,我发现在请求完成之前我需要保持数据源处于打开状态,以便ASP.NET Web API中内置的OData查询系统可以完成其工作.
好的,这听起来很合理.但是我在哪里处理数据源?我没有看到任何明显的地方.我应该在应用程序中管理请求状态吗?这样做的标准方法是什么?
控制器的Dispose()方法是否适当?即是保证一个控制器实例只服务一个请求,还是只是一个实现细节?
我正在使用ASP.NET MVC 4 RC中的ASP.NET Web API.
解决方法
您可以在HttpRequestMessage上使用名为
RegisterForDispose
的扩展来注册在请求完成时要排除的任何资源.
顺便说一句,您可能希望在下一版Web API中查看以下关于IQueryable支持的链接.
http://aspnetwebstack.codeplex.com/discussions/359229
[编辑]在Controller的Dispose()方法中做事也是一个解决方案.在Web API中,基于ApiController的控制器始终是每个实例(每个请求一个控制器实例)