【发布时间】:2012-04-26 17:50:13
【问题描述】:
如果我使用这个:InstanceContextMode.PerSession,那么对于每个客户端,我都会初始化我的服务一次。我说的对吗?
如果我调用具有 [OperationBehavior(TransactionScopeRequired = true)] 的方法,则会调用 JobImplement 构造函数。为什么?
我的服务:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class JobImplement : IJob
{
public static int Sum = 0;
public JobImplement()
{
Sum++;
}
[OperationBehavior(TransactionScopeRequired = true)]
public void UselessMethod1()
{
}
[OperationBehavior(TransactionScopeRequired = true)]
public void AddEmployee(string Name, string Age)
{
}
public int GetSum()
{
return Sum;
}
}
编辑 1:
我正在使用 WSHttpBinding 绑定,这是我唯一的客户端代码。
我的客户:
static void Main(string[] args)
{
ServiceReference1.IJob Service1 = new ServiceReference1.JobClient();
Service1.UselessMethod1();//sum become [1]
Service1.AddEmployee("","");//sum become [2]
Console.WriteLine(Service1.GetSum());//show [2].
Console.WriteLine(Service1.GetSum());//show [2].
Console.WriteLine(Service1.GetSum());//show [2].
}
【问题讨论】:
-
这意味着当人们为您的问题提供合适的答案时,您应该接受最佳答案(通过单击旁边的空心绿色复选标记)。既然我的建议似乎奏效了,让我将其重写为答案,您可以接受它:)