#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 /
, а не с шаблона маршрута в методе.