Совместное использование сеанса между веб-сервисом и приложением asp.net - PullRequest
5 голосов
/ 23 апреля 2010

У меня есть приложение asp.net и веб-сервисы (asmx), которые находятся в одном приложении, но не в одной папке файлов aspx. У меня также есть приложение winform, которое использует веб-сервисы. Метки веб-сервиса помечены [WebMethod (EnableSession = true)]], но я не могу использовать те же значения сеанса, что и приложения в веб-сервисах. Приложение winform имеет доступ к sessionID из приложения, и я использую следующий код

Uri uri = new Uri(ServerServiceUrl);
_cookieContainer = new CookieContainer();
_cookieContainer.Add(new Cookie("ASP.NET_SessionId", SessionID, "/", uri.Host));

Мой вопрос: есть ли что-то, что я пропускаю или делаю неправильно, что я не могу получить доступ к приложению sessioin через веб-сервисы?

Ответы [ 2 ]

1 голос
/ 03 мая 2010

Я не могу пролить свет на то, почему вы не можете заставить приложение winforms «перехватить» сессию - то, что вы делаете, похоже, должно делать именно то, что вы хотите.

Я хотел только предложить, чтобы вы использовали кэш приложения (для кэширования ответа от вашего java-сервиса) вместо хранилища сеансов пользователя. Это имеет следующие преимущества: -

  • a) Если кэшированная информация применима для более чем отдельного пользователя (например, контролируемый доступ), то одна и та же кэшированная информация может использоваться для нескольких пользователей и не выбираться для каждого сеанса.
  • б) У вас больше контроля над тем, как долго объекты кэшируются / когда они удаляются, чем вы получаете данные сеанса (которые просто живут в течение всего сеанса и имеют опасность роста и роста, если вы забудете удалить их). старая информация)
  • в) Если вам не удается заставить ваш сеанс перехватить работу, вы все равно можете получить доступ к данным в кэше из любого сеанса.
0 голосов
/ 03 мая 2010

Вы пытались унаследовать свой класс веб-сервиса от System.Web.SessionState.IRequiresSessionState?

Обычно он используется для обработчиков http, но веб-службы, похоже, используют тот же интерфейс маркера.

...