Проблемы настроить WCF для использования сеанса
-
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);
}