У меня есть служба WCF, которую я звоню от нескольких клиентов. Мне нужно хранить и управлять значением во всем мире. На моем сервисе у меня есть следующие атрибуты:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Single)]
В моем сервисе у меня что-то похожее на это:
private static int counter;
public void PrintCounter()
{
counter++;
StreamWriter sw = new StreamWriter(@"C:\outFile.txt", true);
sw.WriteLine("Counter: " + counter);
sw.Close();
}
С моим ограниченным знанием WCF я бы предположил, что у меня есть служба Singleton и тот факт, что моя личная переменная является статической, что все вызовы службы будут использовать один и тот же объект.
Однако, когда я смотрю на вывод журнала, я вижу следующее:
Counter: 1
Counter: 1
То, что я ожидал увидеть, будет:
Counter: 1
Counter: 2
Я что-то упустил, чтобы заставить работать так, как мне нужно? Нужно ли хранить объекты в каком-то кеше? Любая помощь с благодарностью.
Я могу опубликовать больше кодов, если это необходимо.