2012-07-06 92 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的控制器始終是每個實例(每個請求一個控制器實例)

相關問題