Я хотел бы дать ответ на свой вопрос, так как я нашел способ вручную проверить, существует ли маршрут. Это было то, о чем я не думал в то время, так как я не понимал, что вы можете получить информацию о вашем API через зависимость.
Способ, которым я сделал это сейчас, состоит в том, чтобы использовать IActionDescriptorCollectionProvider
поставщик. Это позволит мне получать все текущие маршруты в API. Используя это, я создал следующее промежуточное программное обеспечение:
public async Task InvokeAsync(HttpContext context)
{
var path = context.Request.Path.Value;
var routes = _actionDescriptorCollectionProvider.ActionDescriptors.Items.Select(ad => $"/{ad.AttributeRouteInfo.Template}").ToList();
if (!routes.Any(route => path.Equals(route, StringComparison.InvariantCultureIgnoreCase))) {
context = await context.HandleRequest(HttpStatusCode.NotFound, "RouteNotFound", "De server heeft geen geldige actie voor de gegeven route.");
return;
}
await _next(context);
}
Это полностью позволяет мне ответить пользовательской ошибкой (это использует HandleRequest (), которая является моим собственным расширением), и обработать остальное в Интерфейс.
Я нашел другой способ решить эту проблему, используя предварительно инициализированную документацию API. Я не уверен, как это назвать, но добавление следующего кода в файл csproj создает XML, который дает те же преимущества:
<NoWarn>$(NoWarn);1591</NoWarn>
<DocumentationFile>Files\Documentation\$(Configuration)_$(AssemblyName)_doc.xml</DocumentationFile>
Это означает, что XML был проанализирован Конечно.
Я все еще ищу различные решения, возможно, лучшие, если есть проблемы с этим.