Управление длительным и критическим процессом ISAPI - PullRequest
4 голосов
/ 20 мая 2011

Сценарий:

  • Клиент выполняет ISAPI-вызов с POST на сервер IIS 7.5 - этот вызов сгенерирует критически важный вывод, который будет распространен среди многочисленных пользователей.(в этом случае используется Delphi XE с HTTP-клиентом Indy 9);
  • ISAPI-процессу требуется ДЛИТЕЛЬНОЕ ВРЕМЯ для завершения (оно выполняется на стороне клиента);
  • Перед возвратом вызова POST пользователь прерывает работу или клиентский компьютер отключается, уничтожая соединение на стороне клиента и оставляяПроцесс ISAPI выполняется на сервере IIS 7.5.

Вопросы:

  • Что делает IIS 7.5 с этим потоком, который все еще выполняется, когда клиент / пользователь прерывает работу иубивает связь?
  • Завершит ли обработка поток на стороне сервера, даже если клиент отключился, или IIS 7.5 уничтожит этот поток в какой-то момент, возможно, оставив беспорядок в прерванном процессе?
  • Зависит ли это время - в зависимости от того, сколько времени потребуется для завершения процесса на стороне сервера?
  • Можно ли это контролировать - могу ли я дать IIS команду завершить процесс, даже если клиент имеетпрервана?Если да, то как?

1 Ответ

3 голосов
/ 20 мая 2011

IIS будет продолжать обрабатывать до завершения или до истечения времени ожидания для пула приложений.

Вам следует посмотреть на использование Indy TIdHTTPServer, а затем вы будете контролировать серверную часть, которая позволит вам настроитьваши собственные правила обработки длинного и, возможно, отключенного сеанса клиента вместо того, чтобы стать экспертом по управлению IIS AppPool.

...