Как запустить серверный код ПОСЛЕ рендеринга и отправки страницы - PullRequest
0 голосов
/ 10 декабря 2010

Я надеюсь, что вы, ребята, можете помочь с этим:)

Мне нужно что-то делать после того, как моя страница отображается в браузере.Подробно, мне нужно отправить электронную почту / смс и другие не связанные с браузером вещи, но операция занимает время, и я не хочу, чтобы мои посетители ждали сообщения об успехе в течение 5-8 секунд.

Я попытался поставить«После рендеринга кода» на странице событие Unload .Это похоже на работу - но только на localhost.Он не работает на нашем производственном сервере.

Так что я подумал, может быть, это какая-то настройка IIS? Я также читал, что это зависит от браузера, если он покажет эту страницупосле завершения рендеринга - или дождитесь завершения всего пакета.

Поэтому я попытался завершить пакет с помощью Response.end перед моим "ARC", но это просто убило его.

У вас, ребята, есть объяснения или теории, как это сделать?

Ответы [ 3 ]

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

Вы можете создать новую тему и вызвать свой метод в этой теме.

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

ThreadPool темы могут помочь вам реализовать эту функцию.

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

Вы можете посмотреть на асинхронное отключение электронной почты / SMS-сообщений со страницы целиком, например, используя очередь MSMQ.Таким образом, вы также сможете обрабатывать электронные письма / SMS более надежным способом, например, повторите попытку через 10 минут, если SMTP-сервер не работает или шлюз SMS занят.

Редактировать: Re: MSMQ vs Thread/ Threadpool - Использование нового рабочего потока также должно работать нормально в большинстве случаев, однако для масштабируемости высокого уровня вы можете рассмотреть MSMQ или аналогичный.

Посмотрите на этот пост SO здесь

Threadpool (или Thread) - Быстрее и проще в реализации - Не отправленные SMS / сообщения будут потеряны в случае повторного использования пула приложений. - Будут конкурировать за потоки (рекомендуется использовать пользовательский Threadpool)

MSMQ -Требуется больше работы - потребуется создать новый процесс слушателя (например, использовать WCF) для обработки сообщений. - Может быть трудно разместить, если у вас нет контроля над сервером. - Может быть транзакционным и постоянным, - то есть неотправленные сообщения не будут потеряны, даже есливаш пул приложений переработан или сервер перезагружается.- Может осуществлять больший контроль над пропускной способностью - регулирование и задержка доставки - например, отправлять SMS в нерабочее время, когда это дешевле

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