Miałem projekt Asp.Net core 2.2.
Niedawno zmieniłem wersję z .net core 2.2 na .net core 3.0 Preview 8. Po tej zmianie widzę ten komunikat ostrzegawczy:
używanie „UseMvc” do konfigurowania MVC nie jest obsługiwane podczas korzystania z routingu punktów końcowych. Aby kontynuować korzystanie z „UseMvc”, ustaw „MvcOptions.EnableEndpointRouting = false” w „ConfigureServices”.
Rozumiem, że ustawiając wartość EnableEndpointRouting
false, mogę rozwiązać problem, ale muszę wiedzieć, jaki jest właściwy sposób rozwiązania tego problemu i dlaczego Endpoint Routing nie potrzebuje UseMvc()
funkcji.
c#
asp.net-mvc
asp.net-core
.net-core
Mehrdad Babaki
źródło
źródło
Odpowiedzi:
Ogólnie rzecz biorąc, należy użyć
EnableEndpointRouting
zamiastUseMvc
i można zapoznać się z kodem uruchamiania aktualizacji routingu, aby uzyskać szczegółowe instrukcje włączaniaEnableEndpointRouting
.Ponieważ
UseMvc
używathe IRouter-based logic
iEnableEndpointRouting
używaendpoint-based logic
. Kierują się inną logiką, którą można znaleźć poniżej:W przypadku
EnableEndpointRouting
używa EndpointMiddleware do kierowania żądania do punktów końcowych.źródło
Rozwiązanie znalazłem w następującej oficjalnej dokumentacji „ Migrate from ASP.NET Core 2.2 to 3.0 ”:
Istnieją 3 podejścia:
W moim przypadku wynik wyglądał tak
źródło
services.AddRazorPages();
zamiastservices.AddMvc();
To zadziałało dla mnie (dodaj
Startup.cs
metodę> ConfigureServices):źródło
Problem, który uważam za spowodowany aktualizacjami platformy .NET Core. Najnowsza wydana wersja platformy .NET Core 3.0 wymaga jawnej zgody na korzystanie z MVC.
Ten problem jest najbardziej widoczny, gdy próbuje się przeprowadzić migrację ze starszej wersji .NET Core (2.2 lub wersja zapoznawcza 3.0) do .NET Core 3.0
W przypadku migracji z wersji 2.2 do 3.0 użyj poniższego kodu, aby rozwiązać problem.
Jeśli używasz szablonu .NET Core 3.0,
ConfigServices po poprawce jak poniżej,
Dziękuję Ci
źródło
W przypadku DotNet Core 3.1
Użyj poniżej
Plik: Startup.cs public void Configure (aplikacja IApplicationBuilder, środowisko IHostingEnvironment) {
źródło
Możesz użyć: w metodzie ConfigureServices:
A dla metody konfiguracji:
źródło
To działało dla mnie na .Net Core 3.1.
źródło
Użyj poniższego kodu
źródło