2016-04-01 18 views
17

W środowisku ASP.NET 4 było to tak łatwe, jak routes.LowercaseUrls = true; w obsłudze dla aplikacji z numerem RegisterRoutes.Jak wymusić routing małych liter w ASP.NET Core MVC 6?

Nie mogę znaleźć odpowiednika w ASP.NET Core MVC6 dla osiągnięcia tego. myślałem, że będzie tutaj:

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

Ale nic w configureRoutes wygląda na to pozwolić ... chyba że istnieje metoda rozszerzenie gdzieś, że nie mogę znaleźć w docs może?

Odpowiedz

54

dla ASP.NET Rdzeń:

Dodaj następujący wiersz do sposobu ConfigureServices klasa Startup.

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

Podziękowania dla Skorunki za odpowiedź w komentarzu. Pomyślałem, że warto promować prawdziwą odpowiedź.

+8

Warto zauważyć, że powinieneś to umieścić PRZED faktycznym wywołaniem 'AddMvc()' in twoja metoda 'Startup.ConfigureServices()'. 'AddRouting()', który jest również wywoływany przez 'AddMvc()', używa wariantów 'Try' metod dodawania zależności do kolekcji usług. Więc kiedy widzi, że zależności routingu zostały już dodane, pominie te części logiki instalacji 'AddMvc()'. –

+0

Zmiana tego na poprawną odpowiedź, ponieważ moja była podczas przejścia asp 4 do rdzenia. – mariocatch

11

Znaleziono rozwiązanie.

W zespole: Microsoft.AspNet.Routing i nazw Microsoft.Extensions.DependencyInjection, można to zrobić w sposób ConfigureServices(IServiceCollection services):

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

Asp netto MVC Rdzeń: \t \t \t services.AddRouting (opcji => \t \t \t { \t \t \t \t options.LowercaseUrls = True \t \t \t}); –

+0

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

+2

To było prawdą przed RTM, teraz powinieneś użyć .AddRouting zamiast .ConfigureRouting –

7

Jak inne odpowiedzi wskazują, dodając:

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

przed

services.AddMvc(...) 

działa świetnie, ale chcę też dodać, że w przypadku korzystania Tożsamość, potrzebne będą także:

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(); 
}); 

Oczywiście, wymień oba IdentityUser i IdentityRole na swoją własną klasę s jeśli jest to wymagane.

Właśnie przetestowałem to z .NET Core SDK 1.0.4 i środowiskiem 1.0.5.

Powiązane problemy