Прочитав длинный поток комментариев, я думаю, что понял суть этого сценария и вопроса. Похоже, что некоторый код tcp-listener запускается из файла webrole.cs, а не из кода приложения asp.net.
Вот в чем дело: веб-роль - Windows Server 2008 с IIS, а также некоторый код Windows Azure для обработки задач начальной загрузки и завершения работы. Файл webrole.cs
, о котором вы говорите, является точкой ввода кода начальной загрузки / завершения работы с такими методами, как OnStart()
, Run()
, OnStop()
и Stopping()
. Этот код запускается в отдельном домене приложений, чем веб-приложение.
Если вы запускаете ServiceHost (или какой-либо другой прослушиватель портов) из webrole.cs, это нормально, но вам потребуется затем временно сохранить контент где-то после его загрузки, а затем сделать его доступным для вашего веб-приложения. Вы можете выбрать долговременное хранилище, такое как хранилище SQL Azure или Azure (большие двоичные объекты или таблицы), или энергозависимое хранилище (например, локальный диск). Затем вы могли бы использовать какой-либо тип схемы связи, чтобы уведомить ваше веб-приложение о том, что оно отображает новые данные, возможно, разместив сообщение в очереди Azure или попросив ваше веб-приложение просто запрашивать данные в таблице каждый раз, когда пользователь запрашивает их. 1014 *