2013-06-20 108 views
1

我一直在瀏覽教程 http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api 以創建OData Web服務。如何創建批處理端點用於asp.net OData web服務

我有我的服務設置如下:

var modelBuilder = new ODataConventionModelBuilder(); 

modelBuilder.EntitySet<Analytic>("Analytics"); 

var edmModel = modelBuilder.GetEdmModel(); 

config.Routes.MapODataRoute(
    routeName: "Odata", 
    routePrefix: "odata", 
    model: edmModel); 

我可以發出GET請求來http://localhost:49255/odata/Analytics那麼web服務功能如預期。

當我嘗試使用批處理端點我得到一個404,我張貼到

http://localhost:49255/odata/$batch 

爲似乎是在此間表示。 http://www.odata.org/documentation/odata-v2-documentation/batch-processing/

我發現下面的頁面https://aspnetwebstack.codeplex.com/wikipage?title=Web%20API%20Request%20Batching這表明我需要顯式地設置BatchHandler

config.Routes.MapODataRoute(
       routeName: "defaultOdata", 
       routePrefix: "odata", 
       model: GetModel(), 
       batchHandler: new DefaultODataBatchHandler(GlobalConfiguration.DefaultServer)); 

DefaultODataBatchHandler似乎並不存在。實際上System.Web.Http.OData.Batch似乎並不存在。我正在使用Microsoft.AspNet.WebApi.OData version 4.0.30506

我嘗試更新在每晚構建但這並沒有工作(不知道如果有人能告訴我怎樣才能得到這個工作?)

nu-get error message

我是正確的思維我只需要等待新版本發佈?

回答

2

湯姆,你可以嘗試以下,看它是否解決了升級您的問題以每晚構建:

  • 卸載「Microsoft.AspNet.Mvc.FixedDisplayModes」包。

  • 使用您在後文中提到的命令升級OData軟件包。

  • 當你啓動應用程序,你可能會看到以下錯誤:

    [A] System.Web.WebPages.Razor.Configuration.HostSection不能轉換爲[B] System.Web.WebPages。 Razor.Configuration.HostSection。類型A來源於位於'C:\ windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System'上下文'Default'中的'System.Web.WebPages.Razor,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35' .Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll」。類型B來源於位於'C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319'上下文'Default'中的'System.Web.WebPages.Razor,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35' \ Temporary ASP.NET Files \ root \ cae46085 \ 829a2d25 \ assembly \ dl3 \ f12eaaeb \ d73d086c_ca6dce01 \ System.Web.WebPages.Razor.dll'。

  • 要解決上述錯誤,修改裝配在Web.config中結合以下:
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:bcl="urn:schemas-microsoft-com:bcl"> <dependentAssembly> <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" /> <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-1.3.0.0" newVersion="1.3.0.0" /> </dependentAssembly> </assemblyBinding>

  • 你應該能成功現在啓動應用程序。