N-уровневая архитектура с проблемой состояния сеансов WCF и ASP.NET - PullRequest
0 голосов
/ 18 января 2011

Я занимаюсь разработкой одного из моих личных проектов и обнаружил некоторую проблему.

Это многоуровневая архитектура:

  • Framework.
  • WCF Frameworkservice.
  • Элемент управления ASP.NET, который подключается к службам WCF Framework на стороне сервера.
  • Клиент ASP.NET, на котором размещен этот элемент управления.

Служба WCFнаходится в режиме совместимости с ASP.NET.

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

У меня есть два вопроса:

1) - В некоторой степени очевидно, но я хочу подтверждение - Есть лифакт вызова служб WCF Framework на стороне сервера означает, что сеанс предназначен для сервера, а не для каждого клиента?

2) Является ли первый вопрос фактом причиной получения нового сеанса после каждого запроса?

В конце я собираюсь отключить режим совместимости ASP.NET для этой службы WCF Framework иразработать собственное управление состоянием сеанса, что не является сложной задачей, но я не изобрел изобретать колеса.

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

1 Ответ

1 голос
/ 18 января 2011

Режим создания экземпляров WCF по умолчанию - Per-Call: объекты служебного вызова существуют во время каждого клиентского вызова.Когда клиентский вызов заканчивается, WCF вызывает IDisposable.Dispose.Тип экземпляра может быть установлен следующим образом:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] 
class MyWCFService : IMyWCFContract....

Существует еще два типа экземпляров: Per-Session Services и Shareable Services.

Вы должны использовать Per-Session для своего проекта, чтобы вы моглиустановите ваш сервис WCF:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
class MyWCFService : IMyWCFContract....

вы можете найти более подробную информацию о MSDN удачи

...