【问题标题】:Injecting OData v4 into MVC 6将 OData v4 注入 MVC 6
【发布时间】:2014-12-09 19:44:34
【问题描述】:

我目前希望有冒险精神的人可能已经解决了这个障碍, 由于当前在 ASP.Net v5.0 上运行的 MVC 6 构建没有任何服务,我可以找到将 OData 加载到管道中。我调用了 app.UseMvc() 并且可以构造约定路由,但是不能在新进程中定义任何 HttpConfiguration 对象。我真的很希望在 MVC 6 中使用组合的 MVC/WebApi,但 OData v4 改变了游戏规则。

如果有人有经验并能指出正确的方向,请指教:

这可能没有太大帮助,但这是我的 Startup 课程:

using System;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Http;
using Microsoft.Data.OData;
// Won't work, but needs using System.Web.OData.Builder;
using Microsoft.Framework.DependencyInjection;

namespace bmiAPI
{
    public class Startup
    {
        public void Configure(IApplicationBuilder app)
        {

            app.UseWelcomePage();
            app.UseMvc();

        }

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();

        }
    }
}

【问题讨论】:

  • 顺便说一句,如果有人想知道 System.Web.Http 在哪里,在 MVC 6 中,Owin 上下文将其替换为 Microsoft.Aspnet.Http。

标签: c# asp.net-core-mvc odata


【解决方案1】:

ASP.NET MVC 6 尚不支持 OData。要在 ASP.NET 中托管 OData,我目前建议使用 ASP.NET Web API 2.x,它同时支持 OData v3 和 OData v4。

如果您想在 ASP.NET 5 应用程序中使用 OData,您可以使用 OWIN bridge 在 ASP.NET 5 上托管 Web API 2.x,但它仍然不会使用 MVC 6。

然后你会有一些这样的代码(基于前面提到的桥):

public void Configure(IApplicationBuilder app)
{
    // Use OWIN bridge to map between ASP.NET 5 and Katana / OWIN
    app.UseAppBuilder(appBuilder =>
    {
        // Some components will have dependencies that you need to populate in the IAppBuilder.Properties.
        // Here's one example that maps the data protection infrastructure.
        appBuilder.SetDataProtectionProvider(app);


        // Configure Web API for self-host. 
        HttpConfiguration config = new HttpConfiguration(); 
        config.Routes.MapHttpRoute( 
            name: "DefaultApi", 
            routeTemplate: "api/{controller}/{id}", 
            defaults: new { id = RouteParameter.Optional } 
        );

        appBuilder.UseWebApi(config);
    };
}

【讨论】:

  • 我一直在努力争取在工作中取得足够的进步,以争取时间积累更多构建更多中间件的经验;我从新的方向看到的一切都是令人振奋的!如果您不想将所有请求映射到托管模块(因此您不会重写 IIS),或者如果您想使用类库并仍然制造一个不错的用于运行 HTTP 分层 OData v4 的小型服务器工厂。目前我在 .Net 中找到了更多关于 OData4 往返的支持,并感谢良好的答案
猜你喜欢
  • 2015-11-06
  • 1970-01-01
  • 1970-01-01
  • 2014-07-26
  • 1970-01-01
  • 2016-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多