我有一个WCF应用程序,具有多个WSDL Web服务,托管在Windows Server 2008 64位的IIS7中。IIS7中的WCF应用程序:丢失单例实例
当第一个webservice方法被调用时(无论首先调用什么),应用程序需要为单例分配一次配置值。
编辑:系统的后端需要使用这种单例方法。
我得到一次分配的配置,但值空再次成为....
下面是代码(简化):
public class SingletonSettings
{
private static readonly SingletonSettings _s;
public SingletonSettings Instance { get {return _s;} }
public object SomeValue { get; set; }
}
public abstract class AbstractWebservice
{
static AbstractWebservice()
{
WebserviceGlobalInitializer.Initialize();
}
}
//Just a webservice
public class Webservice1 : AbstractWebservice, ISomeServiceConctract1
{
public void DoStuff1();
}
//Just a webservice
public class Webservice2 : AbstractWebservice, ISomeServiceConctract2
{
public void DoStuff2();
}
internal class WebserviceGlobalInitializer
{
private static readonly object Lock = new object();
private static bool Initialized = false;
public static void Initialize()
{
lock (Lock)
{
if (!Initialized)
{
InitStuff();
Initialized = true;
}
}
}
private static void InitStuff()
{
string s = SingletonSettings.Instance.SomeValue = "just a ref";
}
}
WebserviceGlobalInitializer.InitStuff()
被调用一次。仍然SingletonSettings.SomeValue
变为空.....
该问题是随机发生的。
我试图
1)从在基类的一个正常的构造调用WebserviceGlobalInitializer.Initialize()
。
2)注释掉:Initialized = true;
在希望的设置将被每次初始化(造成巨大的开销,所以它不会是反正一个长期的解决方案)
仍值变为零。
任何想法?
只要我松它一下子就可以了。我用手动按回收测试并没有中断。 :-( – Fedearne 2010-10-13 13:03:00