1

我一直在浏览 http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api上的教程 来创建 OData 网络服务。

我的服务设置如下:

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我可以按预期向 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 错误消息

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

4

1 回答 1

2

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>

  • 您现在应该能够成功启动应用程序。

于 2013-06-20T15:34:40.287 回答