它應該正常工作 - 重新檢查您的代碼如下。
服務合同:
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData();
}
服務實現
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode = ConcurrencyMode.Multiple)]
public class Service1 : IService1
{
int i = 0;
public string GetData()
{
i++;
return string.Format("Instance number: {0}", i);
}
}
現在要求用同一實例的服務會給遞增值「INT I」從的GetData但對於新的實例將開始與1.
查看以下來自客戶的電話
using (var client = new HttpProxy.Service1Client("NetTcpBinding_IService1"))
{
Console.WriteLine("Response {0}", client.GetData());
Console.WriteLine("Response {0}", client.GetData());
}
using (var client2 = new HttpProxy.Service1Client("NetTcpBinding_IService1"))
{
Console.WriteLine("Response {0}", client2.GetData());
Console.WriteLine("Response {0}", client2.GetData());
}
using (var client = new HttpProxy.Service1Client("WSHttpBinding_IService1"))
{
Console.WriteLine("Response {0}", client.GetData());
Console.WriteLine("Response {0}", client.GetData());
}
與CreateChannel創建代理實例
var binding = new NetTcpBinding();
var address = new EndpointAddress("net.tcp://localhost:8523/Service1");
var channelFactory = new ChannelFactory<WcfServLib.IService1>(binding, address);
WcfServLib.IService1 proxy = channelFactory.CreateChannel();
Console.WriteLine(proxy.GetData());
Console.WriteLine(proxy.GetData());
channelFactory = new ChannelFactory<WcfServLib.IService1>(binding, address);
proxy = channelFactory.CreateChannel();
Console.WriteLine(proxy.GetData());
Console.WriteLine(proxy.GetData());
channelFactory.Close();
服務實現
[ServiceBehavior(InstanceContextMode= InstanceContextMode.PerSession, ConcurrencyMode = ConcurrencyMode.Multiple)] public class Service1 : IService1 { int i = 0; public string GetData()
{
return string.Format("SessionID:{0}, Local variable i:{1}", OperationContext.Current.SessionId, i++);
}
}
如何被定義的變量?它是靜態的嗎? –
你能告訴我們有問題的代碼嗎? –