我试图在ASP.NET Web API上公开IQueryable<>
,我发现在请求完成之前我需要保持数据源处于打开状态,以便在ASP.NET Web API中内置OData查询系统能做好自己的工作。
控制器的Dispose()
方法是否适当?即是保证一个控制器实例只提供一个请求,还是只是一个实现细节?
我正在使用ASP.NET MVC 4 RC中的ASP.NET Web API。
答案 0 :(得分:5)
您可以在HttpRequestMessage
上使用名为RegisterForDispose
的扩展名来注册您在请求完成时要删除的所有资源。
顺便说一句,您可能希望在下一版本的Web API中查看以下关于IQueryable
支持的链接。
http://aspnetwebstack.codeplex.com/discussions/359229
[已编辑]在Controller的Dispose()
方法中执行操作也是一种解决方案。在Web API中,基于ApiController
的控制器始终是每个实例(每个请求一个控制器实例)