ASP.NET Web API请求完成后如何处置资源?

时间:2012-07-06 12:08:03

标签: asp.net asp.net-mvc-4 asp.net-web-api dispose

我试图在ASP.NET Web API上公开IQueryable<>,我发现在请求完成之前我需要保持数据源处于打开状态,以便在ASP.NET Web API中内置OData查询系统能做好自己的工作。

好的,这听起来很合理。但是我在哪里处理数据源?我没有看到任何明显的地方。我应该在应用程序中管理请求状态吗?这样做的标准方法是什么?

控制器的Dispose()方法是否适当?即是保证一个控制器实例只提供一个请求,还是只是一个实现细节?

我正在使用ASP.NET MVC 4 RC中的ASP.NET Web API。

1 个答案:

答案 0 :(得分:5)

您可以在HttpRequestMessage上使用名为RegisterForDispose的扩展名来注册您在请求完成时要删除的所有资源。

顺便说一句,您可能希望在下一版本的Web API中查看以下关于IQueryable支持的链接。 http://aspnetwebstack.codeplex.com/discussions/359229

[已编辑]在Controller的Dispose()方法中执行操作也是一种解决方案。在Web API中,基于ApiController的控制器始终是每个实例(每个请求一个控制器实例)