У меня есть страница общего обработчика (.ashx), которая получает XML-документ от ведущего поставщика. Затем я беру этот документ XML и отправляю его третьему лицу для подписки. Я жду ответа от третьей стороны, а затем передаю этот ответ ведущему поставщику. Все это происходит за 30 секунд или меньше.
Моя проблема в том, что ведущий провайдер будет ждать не более 30 секунд, прежде чем закрыть соединение и двигаться дальше. Я пытаюсь запустить внутренний таймер, и если я не получил ответ от стороннего страховщика, все равно отправьте ответ ведущему провайдеру. Это все отлично работает.
Что я хочу сделать, так это отправить ответ обратно ведущему поставщику, но продолжить ждать ответа стороннего страховщика. Они доставят его нам ... но иногда это может занять пару минут.
Я пробовал все виды комбинаций
Response.Flush();
Response.Close();
Response.End();
context.ApplicationInstance.CompleteRequest();
Все, что мне удалось сделать, это а) выдать ошибку об отмене потока или «Невозможно оценить выражение, потому что код оптимизирован или собственный фрейм находится над стеком вызовов», или b ) клиент считает, что запрос был только что завершен, и он так и не получил ответ.
Я не могу реализовать архитектуру типа очереди, не переработав большую часть логики, и даже тогда я не хочу этого делать, потому что это увеличит время обработки ответа.
Есть предложения? Похоже, что .Close () и .End () не предназначены для того, чтобы функционировать так, как я думаю, и я не могу понять, что следует использовать вместо этого.