2009-08-17 4 views
0

Мое веб-приложение предоставляет несколько служб (WCF), и мне нужно загрузить XML-файл и «сохранить» его статическую переменную, видимую для всего AppDomain. Эта переменная должна запрашиваться и обновляться либо из службы, либо из страницы.Обмен данными через службы WCF и страницы aspx

Дело в том, что я загружаю эту переменную в Application_Start (Global.asax.cs), но когда запрос на обслуживание приходит, переменная пуста и ее необходимо перезагрузить, и это происходит с каждой службой (3), поэтому я получаю 3 экземпляра статической переменной.

Как я могу гарантировать, что все мои приложения работают на одном и том же AppDomain? Что я делаю не так?

VS2008 SP1 на Win7 RTM коробки

+0

Я не вижу возможности сделать это. Служба WCF не будет находиться в том же AppDomain, что и приложение ASP.NET. –

+0

В соответствии с диаграммой на этой странице это возможно ... http://msdn.microsoft.com/en-us/library/aa702682.aspx – sebagomez

+0

Я этого не знал. Какова структура вашего приложения в IIS? Все одно приложение? Все те же пулы приложений? Возможно, добавьте некоторый код отладки, который отображает AppDomain в трех службах, чтобы увидеть, находятся ли они в одном AppDomain или нет. –

ответ

3

Итак, после небольшого исследования я нашел решение. Я разместил здесь решение и множество ссылок, которые помогли мне найти его.

WCF-сервисы и ASPX-страницы выполняются на одном и том же AppDomain при запуске бок о бок (по умолчанию), моя проблема заключалась в том, что AppDomain перерабатывался, потому что мое приложение создавало папку под корневой папкой моего приложения. Когда я переместил это создание из самого приложения, AppDomain отказался от перезапуска, поэтому я всегда сохраняю свои статические значения.

Вот список интересный пост я прочитал и помог моему найти решение:

+0

отличная почтовая ссылка – Mike108