2015-05-01 19 views
5

Sto creando un servizio Web API 2 OWIN self-hosted. Ho bisogno che questo servizio esponga i punti finali OData.Come configurare l'endpoint OData in un'applicazione API Web self-hosted

Il metodo di IIS-hosted tradizionale prevede App_Start/WebApiConfig.cs:

using ProductService.Models; 
using System.Web.OData.Builder; 
using System.Web.OData.Extensions; 

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     // New code: 
     ODataModelBuilder builder = new ODataConventionModelBuilder(); 
     builder.EntitySet<Product>("Products"); 
     config.MapODataServiceRoute(
      routeName: "ODataRoute", 
      routePrefix: null, 
      model: builder.GetEdmModel()); 
    } 
} 

Tuttavia, nella mia soluzione self-hosted non v'è alcuna cosa come WebApiConfig.cs

Dove e come posso specificare questa configurazione OData?

+0

Si tratta di un progetto WebApi? In caso affermativo, WebApiConfig.cs dovrebbe essere aggiunto automaticamente nella cartella App_Start. –

risposta

10

Hai ragione, non esiste necessariamente una cosa come WebApiConfig.cs in un progetto OWIN ospitato autonomamente poiché dichiari il middleware di cui hai bisogno quando ne hai bisogno. Tuttavia, se segui le esercitazioni di self-hosting di OWIN, probabilmente ti sei imbattuto nel concetto Startup.cs, che è ciò che puoi usare, dal momento che puoi creare un'istanza del tuo HttpConfiguration.

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

     ODataModelBuilder builder = new ODataConventionModelBuilder(); 
     builder.EntitySet<Product>("Products"); 
     config.MapODataServiceRoute(
     routeName: "ODataRoute", 
     routePrefix: null, 
     model: builder.GetEdmModel()); 

     appBuilder.UseWebApi(config); 
    } 
}