У меня есть некоторые пользовательские ограничения маршрута, которые проверяют маркеры маршрута.
[Route("{locale:locale}", Name = "HomeLocale")]
Например, значение языка (us) должно быть проверено, чтобы убедиться, что это допустимое значение.Список допустимых значений извлекается из API с помощью HTTP-вызова.
Пример кода ниже:
internal sealed class LocaleRouteTokenConstraint : IRouteConstraint
{
public bool Match(HttpContext httpContext, IRouter route, string routeKey, RouteValueDictionary values, RouteDirection routeDirection)
{
if (routeDirection == RouteDirection.UrlGeneration) //Always match when generating Urls
return true;
var routeTokenValue = values[routeKey].ToString();
//TODO Call API and check values
return true;
}
}
Как лучше всего это сделать?
Мне интересно, как IRouteConstraint
не предоставляет async
метод, и мне придется ждать завершения задачи (с .Result
или .Wait()
)
Также это, очевидно, будет выполняться при каждом запросе.