WCF и ASP.NET сессия
От: Sergei Soloviev  
Дата: 14.03.10 00:20
Оценка:
В страничке ASP.NET в сессию HttpContext.Current.Session пишется информация.
Хочется достать их в WCF сервисе.
Добавил [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] к классу сервиса и <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> в web.config. Пытаюсь извлечь через HttpContext.Current.Session, но сессии из WCF и ASP.NET получаются разными.

В чем причина этого непонятно. Что не так ?
Re: WCF и ASP.NET сессия
От: Ахмед  
Дата: 14.03.10 09:56
Оценка: 4 (1)
Здравствуйте, Sergei Soloviev, Вы писали:

SS>В чем причина этого непонятно. Что не так ?


Да все нормально там должно быть с чтением сессии. А ты уверен что у тебя и WCF и ASP.NET в одной сессии работают? Если ASP.NET страничка вызывается из браузера, а WCF сервис откуда-то еще, то естественно он ничего не знает о текущей ASP.NET сессии.

Например:
1. На asp.net страничке лежит AJAX контрол, которые берет данные из wcf сервиса, который хостится в этом же приложении, через HTTP GET — тут с сессией все нормально, она одна и для WCF и ASP.NET.
2. ASP.NET приложение на сервере берет данные из WCF сервиса, который хостится в этом же приложении — тут сессии будут разные.
Re[2]: WCF и ASP.NET сессия
От: Sergei Soloviev  
Дата: 14.03.10 10:44
Оценка:
Здравствуйте, Ахмед, Вы писали:

А>2. ASP.NET приложение на сервере берет данные из WCF сервиса, который хостится в этом же приложении — тут сессии будут разные.


Есть ASP.NET приложение, оно пишет в сессию. А WCF сервис, который использует консольное приложение, читает из сессии. Хостятся в одном приложение.

А>а WCF сервис откуда-то еще, то естественно он ничего не знает о текущей ASP.NET сессии.


А если WCF сервис будет вызываться Silverlight приложением с той же странички то сессия будет общая ?
Re[3]: WCF и ASP.NET сессия
От: Ахмед  
Дата: 14.03.10 13:06
Оценка: 4 (1)
Здравствуйте, Sergei Soloviev, Вы писали:

SS>Есть ASP.NET приложение, оно пишет в сессию. А WCF сервис, который использует консольное приложение, читает из сессии. Хостятся в одном приложение.


Тут просто надо понимать как идентифицируется сессия в ASP.NET. При создании сессии (первый запрос браузера) — сервер выдает sessionid, который хранится в куки и передается с каждым последующим запросом браузера, например ASP.NET_SessionId=dvqjx1jlva0qyl452ymuz555 (если куки на клиенте отключены — sessionid будет передаваться в виде параметра запроса). Если в запросе к WCF не будет sessionid (или он будет отличен от того что передал браузер), то естественно сессия не будет идентифицирована.

SS>А если WCF сервис будет вызываться Silverlight приложением с той же странички то сессия будет общая ?


Не скажу точно про сильверлайт, но думаю что да. В случае с Flex — определенно да, там куки так же передается в каждом запросе.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.