2016-04-01 22 views
17

In ASP.NET 4 questo era facile come routes.LowercaseUrls = true; nel gestore RegisterRoutes per l'app.Come si applica il routing in minuscolo in ASP.NET Core MVC 6?

Non riesco a trovare un equivalente in ASP.NET Core MVC6 per il raggiungimento di questo. Penserei che sarebbe qui:

app.UseMvc(configureRoutes => 
{ 
    configureRoutes.MapRoute("Default", "{controller=App}/{action=Index}/{id?}"); 
}); 

Ma niente in configureRoutes guarda per permettergli ... a meno che non ci sia un metodo di estensione da qualche parte che non riesco a trovare nella documentazione forse?

risposta

54

per ASP.NET Nucleo:

Aggiungere la seguente riga al metodo di ConfigureServices la classe Startup.

services.AddRouting(options => options.LowercaseUrls = true); 

Grazie a Skorunka per la risposta come commento. Ho pensato che valesse la pena promuovere una risposta reale.

+8

Vale la pena notare che dovresti metterlo PRIMA di chiamare effettivamente 'AddMvc()' in il tuo metodo 'Startup.ConfigureServices()'. 'AddRouting()' che viene anche chiamato da 'AddMvc()' usa le varianti 'Try' dei metodi per aggiungere dipendenze alla propria collezione di servizi. Quindi, quando vede che le dipendenze di routing sono già state aggiunte, salterà quelle parti della logica di installazione di 'AddMvc()'. –

+0

Cambiando questa opzione per correggere la risposta poiché la mia era durante la transizione da Asp 4 a core. – mariocatch

11

Trovato la soluzione.

Nell'assemblea: Microsoft.AspNet.Routing, e il Microsoft.Extensions.DependencyInjection spazio dei nomi, è possibile farlo nel metodo ConfigureServices(IServiceCollection services):

services.ConfigureRouting(setupAction => 
{ 
    setupAction.LowercaseUrls = true; 
}); 
+13

Per ASP NET MVC NUCLEO: \t \t \t services.AddRouting (Opzioni => \t \t \t { \t \t \t \t options.LowercaseUrls = true; \t \t \t}); –

+0

Microsoft.Extensions.DependencyInjection in Microsoft.AspNetCore.Routing.dll –

+2

Questo era vero prima di RTM, ora dovresti usare .AddRouting al posto di .ConfigureRouting –

7

Come altre risposte indicano, aggiungendo:

services.Configure<RouteOptions>(options => options.LowercaseUrls = true); 

prima

services.AddMvc(...) 

grandi opere, ma voglio anche aggiungere che se si utilizza Identità, avrete anche bisogno di:

services.AddIdentity<IdentityUser, IdentityRole>(options => 
{ 
    var appCookie = options.Cookies.ApplicationCookie; 
    appCookie.LoginPath = appCookie.LoginPath.ToString().ToLowerInvariant(); 
    appCookie.LogoutPath = appCookie.LogoutPath.ToString().ToLowerInvariant(); 
    appCookie.ReturnUrlParameter = appCookie.ReturnUrlParameter.ToString().ToLowerInvariant(); 
}); 

E ovviamente, sostituire sia IdentityUser e IdentityRole con la propria classe s se necessario.

Ho appena testato questo con .NET Core SDK 1.0.4 e il runtime 1.0.5.

Problemi correlati