【问题标题】:How to create / where the batch endpoint is for an asp.net OData webservice如何为 asp.net OData webservice 创建批处理端点/在哪里
【发布时间】:2013-06-20 23:43:29
【问题描述】:

我一直在阅读教程 http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api 创建 OData Web 服务。

我的服务设置如下:

var modelBuilder = new ODataConventionModelBuilder();

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

var edmModel = modelBuilder.GetEdmModel();

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

我可以向http://localhost:49255/odata/Analytics 发出获取请求,然后网络服务按预期运行。

当我尝试使用批处理端点时,我得到一个 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

我尝试更新到每晚构建,但这没有用(不知道是否有人能告诉我如何才能让它工作?)

我是否认为我只需要等待更新的版本发布?

【问题讨论】:

    标签: asp.net-web-api odata


    【解决方案1】:

    Tom,您可以尝试以下方法,看看是否能解决您升级到夜间构建的问题:

    • 卸载“Microsoft.AspNet.Mvc.FixedDisplayModes”包。

    • 使用帖子中提到的命令升级 OData 包。

    • 当您启动应用程序时,您可能会看到以下错误:

      [A]System.Web.WebPages.Razor.Configuration.HostSection 无法转换为 [B]System.Web.WebPages.Razor.Configuration.HostSection。类型 A 源自 'System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 在位置 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System .Web.WebPages.Razor\v4.0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll'。类型 B 源自 'System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 在位置 'C:\Windows\Microsoft.NET\Framework\v4.0.30319 \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>

    • 您现在应该可以成功启动应用程序了。

    【讨论】:

      猜你喜欢
      • 2016-07-12
      • 2012-12-30
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      • 2018-07-11
      • 2014-10-18
      • 2017-01-07
      • 2011-02-06
      相关资源
      最近更新 更多