9

Sto utilizzando il routing degli attributi da ASP.NET 5 RC, incluso nella versione RC di Visual Studio 2013.Percorso predefinito per il percorso principale utilizzando l'instradamento dell'attributo asp.net

Mi piacerebbe che il percorso radice, /, conduca al percorso canonico /Home/Index, ma non riesco a trovare un modo per farlo con solo attributo percorsi. È possibile, e se no, come lo farei se sto usando OWIN SelfHost? In altre parole, sto impostando manualmente la mia classe HttpConfiguration nel metodo WebApp.Start<T> (dove T ha un metodo Configure(IAppBuilder) richiamato all'avvio) e non passando attraverso l'oggetto RouteTable.Routes. O dovrei passare attraverso l'oggetto RouteTable.Routes? Non ho avuto molta fortuna con che quando ho provato ...

EDIT: Ecco quello che ho provato finora:

// normal Web API attribute routes 
config.MapHttpAttributeRoutes(); 

config.Routes.MapHttpRoute(
    name: "DefaultWeb", 
    routeTemplate: "{controller}/{action}", 
    defaults: new { controller = "Home", action = "Index" } 
); 

al secondo tentativo di sotto sembra un po 'dubbia, dato che non è chiaro come il mio HttpConfiguration oggetto è legato alla statica RouteTable.Routes oggetto:

// normal Web API attribute routes 
config.MapHttpAttributeRoutes(); 

RouteTable.Routes.MapRoute(
    name: "DefaultWeb", 
    url: "{controller}/{action}", 
    defaults: new { controller = "Home", action = "Index" } 
); 

risposta

26

è possibile impostare il percorso predefinito per l'applicazione in questo modo:

[Route("~/", Name = "default")] 
    public ActionResult Index() { 
     return View(); 
    } 
+0

ho ottenuto "La richiesta attuale è ambiguo tra i seguenti metodi di azione: ..." quando si tenta questo. Ho aggiunto [RoutePrefix ("home")] alla definizione del mio controller e ho cambiato [Route] in [Route ("index")] per rimuovere l'ambiguità. Sia/(default) che/home/index ora funzionano. –

+2

Ho anche ricevuto l'errore ambiguo e l'ambiguità puntava allo stesso controller. Ho rimosso il "[Percorso]" mostrato sopra e ora funziona. – HK1

0

Per chi utilizza .NET Core 1.x, è necessario eseguire questa operazione e utilizzare la risposta di Jay sopra.

Nel file Startup.cs, aggiungere questo al metodo Configure.

app.UseMvcWithDefaultRoute();

Quindi, qualsiasi azione di controllo che si desidera come predefinita, mettere l'attributo [Route("", Name = "default")]