2014-12-09 11 views
6

Attualmente spero che qualcuno avventuriero possa aver affrontato questo ostacolo, come le build attuali per MVC 6 in esecuzione su ASP.Net v5.0 non hanno alcun servizio che possa trovare per caricare OData nel pipeline. Invoco l'app.UseMvc() e posso costruire il routing della convenzione, ma non posso definire alcun oggetto HttpConfiguration nel nuovo processo. Speravo davvero di lavorare con il combinato MVC/WebApi in MVC 6, ma OData v4 è un punto di svolta.Iniezione di OData v4 in MVC 6

Se qualcuno ha avuto esperienza e mi potrebbe punto nella direzione corretta, si prega di avvisare:

Esso non può aiutare molto, ma qui è la mia classe di avvio:

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(); 

     } 
    } 
} 
+0

Proprio come un a parte, se da meravigliarsi che stanno leggendo in cui System.Web.Http è, con MVC 6 contesto Owin sostituisce quello con Microsoft.Aspnet.Http. –

risposta

3

ASP.NET MVC 6 non supporta ancora OData. Per ospitare OData in ASP.NET attualmente raccomanderei l'uso di ASP.NET Web API 2.x, che supporta sia OData v3 che OData v4.

Se si desidera utilizzare OData in ASP.NET 5 app, è possibile utilizzare il OWIN bridge per ospitare 2.x API Web su ASP.NET 5, ma ancora non si utilizza MVC 6.

Farebbe quindi avere qualche codice come questo (sulla base del ponte di cui sopra):

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); 
    }; 
} 
+0

Ho cercato di andare avanti a lavoro abbastanza da guadagnare tempo per acquisire più esperienza nella costruzione di più middleware; tutto ciò che ho visto dalla nuova direzione è rinvigorente! Questo ha aiutato anche, nel caso in cui qualcuno potrebbe imbattersi in questa pagina - se non si desidera mappare tutte le richieste ai moduli gestiti (in modo da non rischiare di riscrivere IIS), o se si desidera utilizzare librerie di classi e ancora produrre un piccolo server factory per l'esecuzione di OData v4 a strati HTTP. Al momento ho trovato più supporto nel round trip di OData4 in .Net, e apprezzo la buona risposta –