I have a WCF application , with multiple WSDL webservices, hosted in IIS7 on Windows Server 2008 64Bit.

The application requires a singleton to be assigned with some configuration values once, when the first webservice method is invoked (no matter what is invoked first).

**Edit:** The backend of the system requires the use of this singleton approach.

I get the configuration assigned once, but the values become null again....

Here is the code (simplified):

```
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()` gets invoked only once. Still `SingletonSettings.SomeValue` becomes null.....

The issue occurs randomly.

I have tried

1) Invoking `WebserviceGlobalInitializer.Initialize()` from a normal constructor in the base class.

2) Commenting out: `Initialized = true;` in hope that the settings would then be initialized every time (causing massive overhead, so it would not be a long term solution anyway)

Still the value becomes null.

Any ideas?