Обмен данными через службы WCF и страницы aspx
Вопрос
Мое веб-приложение предоставляет несколько сервисов (WCF), и мне нужно загрузить XML-файл и «сохранить» его как статическую переменную, видимую для всего AppDomain.Эту переменную необходимо запросить и обновить либо из службы, либо из страницы.
Дело в том, что я загружаю эту переменную в Application_Start (Global.asax.cs), но когда приходит запрос на службу, переменная пуста и ее необходимо «перезагрузить», и это происходит с каждой службой (3), поэтому я заканчиваю с 3 экземплярами статической переменной.
Как я могу гарантировать, что все мои приложения работают в одном домене приложений?Что я делаю не так?
VS2008 SP1 на коробке Win7 RTM
Решение
Итак, после небольшого исследования я нашел решение.Я опубликую здесь решение и множество ссылок, которые помогли мне его найти.
Службы WCF и страницы ASPX ДЕЙСТВИТЕЛЬНО выполняются в одном и том же домене приложения при параллельной работе (по умолчанию). Моя проблема заключалась в том, что домен приложения перерабатывался, поскольку мое приложение создавало папку под корневой папкой моего приложения.Когда я переместил это творение из самого приложения, AppDomain перестал перезапускаться, поэтому я всегда сохраняю свои статические значения.
Вот список интересных сообщений, которые я прочитал и которые помогли мне найти решение:
- Службы WCF и ASP.NET
- Переработка (домены приложений, а не банки)
- Приложение против.Домен приложения
- Управление рабочими процессами и доменами приложений в IIS 7.0 с помощью WMI
- Удаление подкаталогов приложений ASP.NET 2.0 приводит к отключению AppDomain
- ASP.NET v2.0 — перезапуск AppDomain встречается чаще, чем раньше