我创建了一个在启动时使用此方法的win服务:
private String bamboo = "";
public String Baboon = "";
protected override void OnStart(string[] args)
{
this.bamboo = "bamboo";
this.baboon = "baboon";
}
服务启动后,我有返回字段和属性的方法:
public String GetValueBamboo()
{
return this.bamboo;
}
public String GetValueBaboon()
{
return this.Baboon;
}
当我尝试从另一个应用程序获取值时,这些方法返回空字符串:
public void GetValues()
{
var binding = new NetNamedPipeBinding();
var epAddrs = new EndpointAddress("net.pipe://localhost/PipeReverse");
var pipeFactory =
new ChannelFactory<ITaskManager>(
binding,
epAddrs);
var proxy =
pipeFactory.CreateChannel();
Assert.AreEqual(proxy.GetValueBamboo(),"bamboo"); // returns false
Assert.AreEqual(proxy.GetValueBaboon(),"baboon"); // returns false
}
我注意到如果我使用相同的代理对象来首先设置字段/属性的值(没有编写那些方法,非常简单),那么结果会按预期结果出来,但每次调用后都会有新的代理对象再次返回空字符串。
有没有办法可以在服务上设置一些属性和/或字段,并且它们在服务调用之间保持不变?
答案 0 :(得分:0)
我最终使用的解决方案只是将字段声明为静态,然后它可以工作。
我仍然想知道为什么重新初始化客户端后服务中的实例字段会重置,所以如果有人对此有任何想法,我非常想知道。