我已经做了一个相当简单的示例来演示实例管理的每个呼叫模式。 我已经使用了静态变量计数器来增加每个实例的计数,并且我已经将实例模式指定为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