2016-04-29 14 views
2

Ich habe ein Routing-Problem in einer MVC 6-Webanwendung: Wenn ich Route-Parameter in der standardmäßig verwendeten Controller festlegen, senden Anwendung einen 404-Fehler.Routing-Fehler mit Standard-URL in ASP.NET MVC 6

Meine Routing-Konfiguration:

 app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=Dashboard}/{action=Index}/{id?}"); 
     }); 

Mein Dashboard-Controller (Anwendung funktioniert):

[Authorize] 
public class DashboardController : Controller 
{ 
    public DashboardController() 
    { } 

    [HttpGet] 
    public IActionResult Index() => View(new IndexViewModel()); 
} 

Same Armaturenbrett Steuerung (Anwendung reagiert, die einen 404-Fehler):

[Authorize] 
[Route("[controller]")] 
public class DashboardController : Controller 
{ 
    public DashboardController() 
    { } 

    [HttpGet] 
    [Route("[action]")] 
    public IActionResult Index() => View(new IndexViewModel()); 
} 
+0

erreicht werden Welche URL verwenden Sie, die 404 zurückgibt? –

+0

Die Standard-URL, wenn ich die Anwendung lanch, http: // localhost: PORT_NUMBER/ – AdrienTorris

+0

@ Adrien: Bitte verwenden Sie nicht asp.net-mvc und asp.net-mvc6-Tags. Former ist für das alte ASP.NET MVC Framework und später ist man falsch, da der ASP.NET Core MVC hat seine Version zurückgesetzt auf 1.0.0 – Tseng

Antwort

2

Der Grund dass dies der Fall ist, sind die über routes.MapRoute angegebenen Routen nur App ly zu den Reglern, die nicht sind, das Attribut basiert, das Routing verwendet. Da Ihr zweites Beispiel das attributbasierte Routing verwendet, kann der Controller nur über die im Attribut angegebene Route erreicht werden. Es kann also nur unter/Dashboard/Index

Verwandte Themen