2015-05-01 28 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); 
    } 
} 
相关问题