【问题标题】:How do I dispose of resources after an ASP.NET Web API request completes?ASP.NET Web API 请求完成后如何处理资源?
【发布时间】:2012-07-06 12:08:02
【问题描述】:

我试图通过 ASP.NET Web API 公开IQueryable<>,我发现我需要保持数据源打开直到请求完成,以便 ASP.NET Web API 中内置的 OData 查询系统可以做到它的工作。

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

控制器的Dispose()方法是否合适? IE。是否可以保证一个控制器实例只服务一个请求,或者这只是一个实现细节?

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

【问题讨论】:

  • 通过网络公开IQueryable<T> 有什么意义?无论如何它都会被序列化。最后一个.ToList(),你就完成了。你立即处理。
  • @DarinDimitrov 允许查询 OData 支持。

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


【解决方案1】:

您可以在HttpRequestMessage 上使用名为RegisterForDispose 的扩展程序来注册您希望在请求完成时释放的任何资源。

顺便说一句,您可能想查看以下链接,以了解下一个 Web API 版本中的 IQueryable 支持。 http://aspnetwebstack.codeplex.com/discussions/359229

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    • 2019-04-25
    • 2010-09-10
    • 2020-04-15
    • 2020-04-12
    • 1970-01-01
    • 2020-09-19
    相关资源
    最近更新 更多