Мигрируя из .NET CORE 3.1 в .NET 5, мы столкнулись с своеобразным поведением с конфигурацией общего маршрута. p>
Код: Выделить всё
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "home",
defaults: new { controller = "Home", action = "Index" });
//catch-all endpoint
endpoints.Map("{*.}", async (t) =>
{
System.Console.WriteLine("hello");
await Task.CompletedTask;
});
});
}
Вызов URL: http: // localhost: порт/дом достигает маршрута с уловами вместо домашнего контроллера. Если карта конечной точки с уловами полностью прокомментирована, конечная точка домашнего контроллера достигается, что мы и ожидаем в обоих случаях, читая документы MSDN. Бахавиор перед миграцией был самым специфическим маршрутом, называемым первым (то есть конечной точкой домашнего контроллера), и улово отреагировал только тогда, когда маршрут не мог быть сопоставлен. Net 5, или мы что -то упускаем?
Подробнее здесь:
https://stackoverflow.com/questions/658 ... te-when-in