如何控制OData服務文檔的根元素中的基本URL屬性?在WebApi OData中爲OData服務文檔庫URL提供尾部斜線
我設置了使用的WebAPI的System.Web.Http.OData.Builder.ODataConventionModelBuilder
和控制器OData服務從System.Web.Http.OData.ODataController
這一切精美的作品和Excel 2013愉快地訪問數據繼承。
嘗試使用Excel 2010和PowerPivot時出現問題。我知道fix是在沒有Accept頭的情況下發送JSON格式的響應,但我找不到任何有關基本URL的問題的討論。
我已經建立了我的OData路線與config.Routes.MapODataRoute("odata", "odata", builder.GetEdmModel());
,當我打這個網址我得到的<service xml:base="http://localhost/odata" xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom"/>
的Excel 2010 +的PowerPivot讀取此URL,並決定這樣的響應,因爲沒有尾隨斜線的基礎上URI,它應該請求具有URI的集合,例如http://localhost/Products
而不是http://localhost/odata/Products
。
我已經通過訪問服務文檔的靜態版本來確認我的懷疑,修改後將斜線添加到基本屬性值,然後爲集合資源請求正確的URL。
我試過通過ASP.Net WebStack源代碼來查看是否可以重寫格式化程序或其他東西,但迷路了。任何建議將不勝感激。
你有沒有解決這個問題,或只是搬到了Excel 2013? – Nikolaj
我最後加入了一個DelegatingHandler,它檢查RequestURI是否適用於OData模型,如果是,則使用RegEx查找基本URL並附加尾部斜槓。可怕的,但它的作品。 – Darran