Могу ли я пропустить «ожидание» в GetResponseAsync () HttpWebRequest - PullRequest
1 голос
/ 19 апреля 2019

В моем методе Web Api 2 я выполняю некоторую работу, а затем мне нужно попасть в конечную точку REST другого сайта, поэтому я использую HttpWebRequest для отправки сообщения. Однако этот внешний URL-адрес будет обрабатываться в течение 30 минут, прежде чем он вернется (мне не принадлежит внешний сайт). Я не хочу, чтобы вызывающий мой метод должен был ждать завершения этого возврата.

Помимо очевидного "если другой сайт выходит из строя, вы не знаете", есть ли недостаток в том, чтобы не выполнять await в методе request.GetResponseAsync() и просто позволить моему коду вернуться?

1 Ответ

2 голосов
/ 19 апреля 2019

есть ли минус в том, чтобы не делать ожидания

Возможно.Когда ваш локальный HttpWebRequest будет удален, он, вероятно, уведомит удаленный API, который обычно интерпретируется веб-серверами как «отмена».Ваш локальный HttpWebRequest может быть завершен, когда ваше приложение выгружено / переработано, что периодически происходит на ASP.NET/IIS.

. Поэтому я бы порекомендовал стандартное решение для очереди с независимым бэкэндом дляэто: ваш API должен поместить запрос в очередь, а отдельный бэкэнд-процесс должен выполнять длительные вызовы API.

...