Je crée un objet singleton dans la première requête au service Web et le conserve dans la mémoire.Problème d'objet Web Service Singleton
Cela fonctionne correctement pendant les premières secondes. Si je fais une demande 5 minutes plus tard, je peux voir que l'objet singleton est créé à nouveau? mon objet singleton est-il disposé après x minutes? Comment puis-je faire pour augmenter la durée de vie de mon objet pour toujours?
public sealed class Singleton
{
static ServerInstance instance = null;
static readonly object padlock = new object();
Singleton() {
}
public static ServerInstance Instance {
get {
lock (padlock) {
if (instance == null) {
instance = new ServerInstance();
}
return instance;
}
}
}
~Singleton()
{
#if DEBUG
ExceptionFactory.Fatal("~Singleton() called!");
#endif
}
}
[WebMethod]
public string OnReceiveEvent(string objectXmlData, string objectType) {
if (!Singleton.Instance.initServerComplete) {
InitServer();
}
return Singleton.Instance.OnReceiveEvent(objectXmlData, objectType);
}
public void InitServer() {
if (!Singleton.Instance.initServerComplete) {
Singleton.Instance.InitServer();
Singleton.Instance.initServerComplete = true;
GC.KeepAlive(Singleton.Instance);
}
}
J'ai essayé ce GC.KeepAlive (Singleton.Instance); ainsi, mais pas de chance – kakopappa
duplication possible de [problème d'initialisation de service Web] (http://stackoverflow.com/questions/4323211/webservice-initialisation-issue) –
Insérez du code. –