static void Main(string[] args) { Console.WriteLine(typeof(int).BaseType.BaseType); HttpSelfHostServer server = null; try { // Set up server configuration HttpSelfHostConfiguration configuration = new HttpSelfHostConfiguration(_baseAddress); configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Never; // Generate a model IEdmModel model = GetEdmModel(); // Create the OData formatter and give it the model ODataMediaTypeFormatter odataFormatter = new ODataMediaTypeFormatter(model); configuration.Formatters.Clear(); configuration.SetODataFormatter(odataFormatter); // Metadata routes to support $metadata and code generation in the WCF Data Service client. configuration.Routes.MapHttpRoute(ODataRouteNames.Metadata, "$metadata", new { Controller = "ODataMetadata", Action = "GetMetadata" }); configuration.Routes.MapHttpRoute(ODataRouteNames.ServiceDocument, "", new { Controller = "ODataMetadata", Action = "GetServiceDocument" }); // Relationship routes (notice the parameters is {type}Id not id, this avoids colliding with GetById(id)). configuration.Routes.MapHttpRoute(ODataRouteNames.PropertyNavigation, "{controller}({parentId})/{navigationProperty}"); // Route for manipulating links. //configuration.Routes.MapHttpRoute(ODataRouteNames.Link, "{controller}({id})/$links/Products"); configuration.Routes.MapHttpRoute(ODataRouteNames.Link, "{controller}({id})/$links/{navigationProperty}"); // Routes for urls both producing and handling urls like ~/Product(1), ~/Products() and ~/Products configuration.Routes.MapHttpRoute(ODataRouteNames.GetById, "{controller}({id})"); configuration.Routes.MapHttpRoute(ODataRouteNames.DefaultWithParentheses, "{controller}()"); configuration.Routes.MapHttpRoute(ODataRouteNames.Default, "{controller}"); // Create server server = new HttpSelfHostServer(configuration); // Start listening server.OpenAsync().Wait(); Console.WriteLine("Listening on " + _baseAddress); } catch (Exception e) { Console.WriteLine("Could not start server: {0}", e.GetBaseException().Message); } finally { Console.WriteLine("Hit ENTER to exit..."); Console.ReadLine(); if (server != null) { // Stop listening server.CloseAsync().Wait(); } } }