我已經做了一個相當簡單的示例來演示實例管理的每個呼叫模式。 我已經使用了靜態變量計數器來增加每個實例的計數,並且我已經將實例模式指定爲perCall。計數變量的預期行爲應該不應該增加,因爲實例按照每個請求進行處理,但觀察到的行爲是計數器變量對於每個請求連續增加,甚至對於新客戶端也是如此。WCF中的實例管理的每個呼叫模式不起作用
這是我的服務代碼
namespace PerCallInstanceService
{
[ServiceContract]
public interface IMyService
{
[OperationContract]
int MyMethod();
}
}
namespace PerCallInstanceService
{
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall)]
public class MyService :IMyService
{
public int m_Counter=0;
#region IMyService Members
public int MyMethod()
{
m_Counter++;
return m_Counter;
}
#endregion
}
}
這是客戶端代碼。
Console.WriteLine("Service Instance mode: Per-Call");
Console.WriteLine("Client making call to service...");
MyServiceClient proxy = new MyServiceClient();
Console.WriteLine("Counter:" + proxy.MyMethod());
Console.WriteLine("Counter:" + proxy.MyMethod());
Console.WriteLine("Counter:" + proxy.MyMethod());
Console.WriteLine("Counter:" + proxy.MyMethod());
Console.ReadLine();
我的ServiceHost:
(InstanceContextMode = InstanceContextMode.PerSession)將保留會話狀態,除非調用proxy.Close()/ Abort。 – rt2800 2012-07-10 12:05:07
對不起,這實際上是InstanceContextMode.PerCall。我遇到了PerCall模式的上述問題。編輯上述.. – user1208862 2012-07-10 12:54:29
您可以在創建ServiceHost的地方發佈代碼嗎? – JohnC 2012-07-10 13:01:27