Когда вызывается Application_End в asp.net WebService - PullRequest
5 голосов
/ 28 декабря 2010

Когда именно запускается Application_End в случае WebService ??

Я прочитал ( Application_End global.asax ), что Application_End вызывается каждый раз, когда приложение выгружается.Означает ли это после каждого вызова метода в веб-службе?

У меня есть фрагмент кода, который мне нужно запустить только один раз при первом вызове IIS, и снова после последнего вызова IIS (и между циклами), и я не могу запускать его при каждом запросе и ответе WebService ...

1 Ответ

10 голосов
/ 28 декабря 2010

Application_End это именно то, что вы ищете;Приложение выгружается в соответствии с заданной вами конфигурацией, но по умолчанию оно будет продолжать работать в течение определенного времени бездействия после поступления любых запросов или будет работать, пока запросы постоянно поступают.

Обратите внимание, что другие вещи могут привести к обновлению пула приложений и, следовательно, вызвать Application_End;определенное количество перекомпиляций (из-за измененных aspx-файлов и т. д.), определенный период времени, определенный уровень нагрузки на память и т. д. Опять же, все они настраиваются, но обычно имеют разумные значения по умолчанию.

Главное, что нужно иметь в виду, это то, что вы можете ожидать, что будет некоторое время между Application_Start и Application_End, но вы не можете знать, сколько времени будет, исходя из того, что происходит на сервере.

Также обратите внимание, что при перезапуске пула приложений уже запущенные запросы не останавливаются внезапно и могут фактически перекрываться новыми запросами, обрабатываемыми новым процессом.Это означает, что старый пул приложений End может называться после нового пула приложений Start.Но это не должно иметь значения, потому что каждое приложение имеет свой собственный домен приложений и не обменивается данными.(но иногда это может объяснить иначе странное поведение.) И, наконец;даже это настраивается тоже!


РЕДАКТИРОВАТЬ: Еще одна вещь, чтобы добавить!Обратите внимание, что если сервер внезапно отключится, Application_End будет не вызываться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...