2012-07-06 54 views
3

我试图通过ASP.NET Web API公开一个IQueryable<>,我发现我需要保持数据源处于打开状态,直到请求完成,以便ASP.NET Web API中内置的OData查询系统可以完成其工作。 OK,这听起来完全合理。但是,我在哪里处理数据源?我没有看到任何明显的地方。我应该在应用程序中管理请求状态吗?什么是标准的做法呢?如何在ASP.NET Web API请求完成后处理资源?

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

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

+0

通过线路公开'IQueryable '是什么意思?无论如何它会被序列化。一个'.ToList()'在最后,你就完成了。你立即处置。 – 2012-07-06 12:39:15

+3

@DarinDimitrov允许查询OData支持。 – Aliostad 2012-07-06 12:44:51

回答

5

您可以使用在HttpRequestMessage称为RegisterForDispose扩展到注册,你想,当一个请求进行处置掉任何资源。

顺便说一句,你可能想看看下面的链接,关于在下一版Web API中支持IQueryable的支持。 http://aspnetwebstack.codeplex.com/discussions/359229

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

相关问题