Вопрос
Есть ли способ программно вызывать конвейер запросов ASP.NET Core из моего собственного приложения, если у меня есть HTTP-глагол, маршрут, заголовки и содержимое тела?
Справочная информация
В некоторых случаях WebAPI нашего приложения ASP.NET Core недоступен, так как приложение работает за брандмауэром или недоступно по другим причинам.
Для предоставления решениядля этого сценария мы хотим, чтобы наше приложение опрашивало какой-то другой сервис на предмет «рабочих элементов», которые затем переводятся в вызовы API в нашем приложении.
Подходы, которые я рассмотрел
- Я мог бы, вероятно, простопопросите DI дать мне экземпляр контроллера и затем вызвать методы для него.Проблемы с этим подходом:
- Атрибуты авторизации не применяются.Но в нашем сценарии использования важно проверить токен на предъявителя.Поэтому здесь возникает вопрос: как программно вызвать промежуточное ПО авторизации?
- Мне бы пришлось самому перенаправлять входящие рабочие элементы на правильный контроллер / метод.
- Используя пакет
Microsoft.AspNetCore.TestHost
, я могу создать TestClient
, который позволит мне делать запросы самому себе (см. здесь ).Но здесь есть несколько неопределенностей: - Предполагаемый вариант использования этого
TestHost
предназначен для интеграционного тестирования.Безопасно ли использовать это в производственной среде? - Возможно ли даже, чтобы такой
TestServer
работал параллельно с обычным хостингом? - Как насчет безопасности потоков?Могу ли я создать несколько
TestClients
из одного TestServer
экземпляра и использовать их из разных потоков?
Так что я уверен, что должен быть более чистый и прямой способпрограммно вызывать конвейер запросов из моего собственного приложения ...