2015-05-01 56 views
5

我正在構建OWIN自託管Web API 2服務。 我需要此服務才能公開OData端點。如何在自承載Web API應用程序中配置OData端點

傳統IIS託管的方法包括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()); 
    } 
} 

然而,在我的自我託管的解決方案有作爲WebApiConfig.cs

在哪裏以及如何沒有這樣的事我可以指定此OData配置?

+0

這是一個WebApi項目嗎?如果是,則WebApiConfig.cs應該自動添加到App_Start文件夾中。 –

回答

10

你是對的,在自己託管的OWIN項目中不一定是WebApiConfig.cs這樣的東西,因爲你在需要時聲明你需要的中間件。但是,如果您遵循OWIN自主託管教程,您可能會碰到Startup.cs概念,您可以使用這個概念,因爲您可以在那裏實例化您的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); 
    } 
} 
相關問題