2017-02-10 3 views
0

Ich habe eine Web-API, die Convention-basiertes Routing in ASP.NET Core 1.1 verwendet. Ich habe den folgenden Code in der Configure Methode meiner Startup.cs:Web-API funktioniert nicht mit Convention-based Routing

app.UseMvc(routes => 
{ 
    routes.MapRoute(
     name: "api", 
     template: "api/inventory", 
     defaults: new { controller = "Inventory" }); 
}); 

Ich habe eine andere InventoryController.cs Klasse enthält:

public class InventoryController : Controller 
{ 
    [HttpGet] 
    public IEnumerable<string> Get() 
    { 
     return new string[] { "value1", "value2" }; 
    } 
} 

Ich erwarte, dass ich ["value1","value2"] erhalten wird, wenn ich api/inventory nennen, aber das ist nicht der Fall. Ich erhalte stattdessen einen 404. Ich bin neu in ASP.NET und habe fast alles ausprobiert, was mir einfällt und am Ende ist. Ich werde hier notieren, dass mit einem RouteAttribute alles funktioniert gut funktioniert.

Antwort

0

haben Sie versucht, es wie dieses

app.UseMvc(config => { 
      config.MapRoute(
       name: "Default", 
       template: "{controller}/{action}/{id?}" 
       ,defaults: new { controller="App", action="Index"} 
       ); 
     }); 

und Ihre Klasse wie

[Route("api/Inventory")] 
public class InventoryController : Controller 
{ 
    [HttpGet] 
    public IEnumerable<string> Get() 
    { 
    return new string[] { "value1", "value2" }; 
    } 
} 
+0

aussehen tun Wie ich in meiner Frage erwähnt, mit einem 'RouteAttribute' alles funktionieren macht. Aber ich möchte wissen, warum das herkömmliche Routing nicht funktioniert. – Hele