Silverlight, WCF AspNetCompatibilityRequirements и состояние сеанса ASPNET не являются общими - PullRequest
0 голосов
/ 06 октября 2009

У меня есть приложение Silverlight, которое при нажатии кнопки открывает страницу aspx в новом окне браузера.

Я хочу передать некоторые данные об имени пользователя / пароле из Silverlight на страницу aspx. Насколько я понимаю, я должен использовать службы WCF для установки состояния сеанса, которое затем можно получить со страницы aspx.

Я выполнил правильные шаги, но на странице aspx отказывается видеть состояние, установленное Silverlight.

То, что я сделал, это;

  • Создан сервис WCF, который устанавливает System.Web.HttpContext.Current.Session ["Thing"]
  • В этом сервисе установите AspNetCompatibilityRequirements = Обязательно, а также установите aspNetCompatibilityEnabled = "true" в web.config

Мое приложение Silverlight способно успешно устанавливать (и извлекать) информацию о сеансе, используя эту службу WCF.

Однако, когда я получаю Session ["Thing"] на странице aspx, он становится пустым. Также, если я установлю Session ["Thing"] на странице aspx, Silverlight не получит его.

Это как если бы у обоих были разные сессии - почему это так?

Заранее спасибо Matt

Ответы [ 2 ]

0 голосов
/ 07 октября 2009

Возможно ли, что служба WCF, с которой общается ваш клиент Silverlight, находится в другом веб-приложении (т. Е. Существует более одного веб-проекта)? Поставщик состояния in-proc по умолчанию действительно для каждого домена приложений, поэтому, если они находятся в разных приложениях, у вас будет две копии состояния сеанса в двух доменах приложений. Если это так, просто переместите сервисный код в одно и то же веб-приложение со страницами, и жизнь наладится. Я не могу придумать другого объяснения - я делал это много раз без проблем.

0 голосов
/ 06 октября 2009

Насколько я могу судить, если вы откроете страницу в новом окне браузера, она создаст новый сеанс. Ваша единственная надежда на совместное использование сеанса - создать общий объект на уровне веб-сервера (безобразно).

Почему бы вам просто не передать состояние в виде строки запроса? Или откройте страницу в HtmlHost тексте ссылки элемент без SL?

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