Ведет ли ‘/’ перед ошибкой шаблона пути?

#c# #.net #asp.net-core #url #routes

#c# #.net #asp.net-core #url #маршруты

Вопрос:

Шаблоны URL выражаются без ведущего символа /, который не является частью пути URL.Когда путь URL-адреса запроса совпадает с шаблоном URL-адреса, запрос будет перенаправлен функции конечной точки, которая генерирует ответ. (Мартин Фриман. Pro ASP.NET Ядро 3. Страница 284. Последний абзац.)

Это рассказывается о настройке сопоставления для EndpointMiddleware в приложении.Используйте конечную точку (см. Пример ниже)

Во-первых, почему ‘/’ не является частью пути? HttpContext.Request.Путь начинается с ведущего ‘/’.

Во-вторых, этот код и код, использующий все другие шаблоны с ведущим ‘/’, работает так же, как код без ‘/’. Автор ошибается или я чего-то не понимаю?

 app.UseEndpoints(rb =>
{
    rb.Map("/{var1}/{*others}", async (ctx) =>
    {
        await ctx.Response.WriteAsync($"{ctx.Request.RouteValues["var1"]}");
    });
});
  

Ответ №1:

Вот официальная ссылка, а после The following table demonstrates example route templates and their behavior: вы можете увидеть таблицу. введите описание изображения здесь
Example Matching URI в таблице все начинается с / , так что это означает, что все должно начинаться с сопоставления url / , а не с шаблона маршрута в методе.

введите описание изображения здесь