2015-05-01 35 views
5

Bir OWIN kendi kendini barındırılan Web API 2 hizmetini yapıyorum. Bu servisin OData bitiş noktalarını ortaya çıkarması gerekiyor. WebApiConfig.csKendi kendine barındırılan bir Web API uygulamasında OData bitiş noktası nasıl yapılandırılır

nerede ve nasıl diye bir şey orada olabilir olduğunu

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

Ancak, benim kendi kendine barındırılan çözeltide:

geleneksel IIS barındırılan yöntem App_Start/WebApiConfig.cs kapsar Bu OData yapılandırmasını belirtin mi?

+0

Bu bir WebApi projesi mi? Evet ise, WebApiConfig.cs otomatik olarak App_Start klasörünün içine eklenmelidir. –

cevap

10

Haklısınız, gerek duyduğunuz orta yazılımı bildirmeniz gerektiğinden, kendiniz barındırılan bir OWIN projesinde WebApiConfig.cs gibi bir şey olması gerekmez. Ancak, OWIN kendi kendini barındıran eğiticileri takip ediyorsanız, muhtemelen Startup.cs konseptine çarptısınız. Bu, HttpConfiguration ürününüzünüzü buradan başlatabilir.

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