2015-09-18 90 views
1

如果定義的返回類型爲IQueryable那麼我的ajax調用會失敗一段時間。何時在Web服務中使用IQueryable作爲返回類型

 [HttpGet] 
    public IQueryable<Banner> GetBannerForExcel() 
    { 
     return this._banneruow.Repository.GetAll(); 
    } 

我得到500內部服務器錯誤,也無法調試;

XML Parsing Error: no element found Location: moz-nullprincipal:{4acaf0ef-4230-404d-ae26-304916e1c044} Line Number 1, Column 1:

所以,當我使用的返回類型List<Banner>它可以完美運行而不會出現錯誤。

回答

1

如果您的控制器返回OData格式,則返回IQueryable的操作的響應主體將包含更多信息,如數據的下一頁,odata元數據。 IQueryable支持進一步的過濾,分頁,但不支持通過索引器進行隨機訪問。列表支持通過索引器的隨機訪問,不支持進一步的過濾。在你的情況下,如果你只需要客戶端的數據,然後返回List或IEnumerable。

IQueryable是數據層(服務器端)的更好選擇,因爲它推遲執行。

我也建議你跟蹤你從服務器找回什麼,當你使用的IQueryable和列表使用瀏覽器的開發工具,或Fiddler

您可以在這裏找到更多的信息:

IQueryable, IEnumerable or List

Implement Efficient Data Paging

To return IQueryable or not return IQueryable

+0

Ť爲我們的寶貴時間。是的,我正在使用OData格式。我想通過ID基礎過濾記錄後,我點擊過濾器顯示失敗錯誤代碼500.我無法錯誤跟蹤它。 –

+0

經過長時間的努力發現問題,我沒有設置複製本地真正的Microsoft.Data.OData.dll,所以它顯示錯誤的實時應用程序。 –

相關問題