Одна вещь - определенная утилита вызывается до Applicaion_End. После добавления записи в Application_End, чтобы показать вам, что она действительно вызывается recycle, посмотрите, что происходит, когда вы добавляете бесконечный цикл для удаления. Конец звонят?
Вы также должны заметить, что метод Application_End должен вызываться всякий раз, когда домен приложения выгружается. Это включает в себя такие вещи, как изменения web.config.