проблема настройки WCF для использования сеанса - PullRequest
0 голосов
/ 16 июня 2010

У меня проблемы с настройкой службы WCF для работы в режиме сеанса.В качестве теста я написал этот простой сервис:

[ServiceContract]
public interface IService1
{
    [OperationContract]
    string AddData(int value);
}

[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)]
internal class Service1 : IService1,IDisposable
{
    private int acc;

    public Service1()
    {
        acc = 0;
    }

    public string AddData(int value)
    {
        acc += value;
        return string.Format("Accumulator value: {0}", acc);
    }

    #region IDisposable Members

    public void Dispose()
    {           
    }

    #endregion
}

Я использую привязку Net.TCP с конфигурацией по умолчанию с включенным флагом надежного сеанса.Насколько я понимаю, такой сервис должен работать без проблем в режиме сессии.Но служба работает как в режиме вызова - каждый раз, когда я вызываю AddData, конструктор вызывается перед выполнением AddData, а после вызова вызывается Dispose ().Есть идеи, почему это может происходить?Возможно, я что-то упускаю?

примечание: я не знаю, связано ли это, но я использую VS2008 для запуска этого.

Обновление: я заметил здесь что wcftestclient не поддерживает сеанс с клиентами - возможно, это была моя проблема.На самом деле это была проблема.Подключение к сервису из простого консольного клиента подтвердило, что сервис работает как надо.

1 Ответ

1 голос
/ 16 июня 2010

Попробуйте указать SessionMode при определении ServiceContract:

[ServiceContract(SessionMode = SessionMode.Required)]
public interface IService1
{
  [OperationContract]
  string AddData(int value);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...