Проблема в ServiceBehaviorAttribute ReleaseServiceInstanceOnTransactionComplete , который по умолчанию имеет значение true.Пока атрибут включен, экземпляр службы будет уничтожен после любой транзакции.
Вы можете установить атрибут в значение false, однако это приведет к очень сложному решению, а - это плохая архитектура .Например, у вашей службы есть два метода:
public void Method1()
{
//transaction
//use data base resources table1;
}
public void Method2()
{
//transaction
//use data base resources table1;
}
Если клиент вызывает Method1, то вызывает Method2, в некоторых случаях может возникнуть тупик, или Method2 будет ожидать освобождения table1 с помощью Method1.
Лучше использовать настройки по умолчанию.Или используйте сеанс PerCall, когда экземпляр сеанса воссоздается для каждого вызова.