Проблемы настроить WCF для использования сеанса

StackOverflow https://stackoverflow.com/questions/3051715

  •  27-09-2019
  •  | 
  •  

Вопрос

У меня проблемы с настройкой службы 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 Binding с конфигурацией по умолчанию с включенным надежным флагом сеанса. Насколько я понимаю, такая служба должна бежать без проблем в режиме сеанса. Но, обслуживание работает как в режиме вызовов - каждый раз, когда я вызываю Adddata, конструктор вызывается перед выполнением ADDDATA и Dispose () вызывается после вызова. Любые идеи, почему это может происходить? Возможно, я что-то не хватает?

Примечание. Я не знаю, связано ли это, но я использую VS2008, чтобы запустить это.

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

Это было полезно?

Решение

Попробуйте требовать сеансаMode при определении ServiceContract:

[ServiceContract(SessionMode = SessionMode.Required)]
public interface IService1
{
  [OperationContract]
  string AddData(int value);
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top