2011-05-14 3 views
0

Actuellement, mon DomainService effectue une initialisation d'une ressource chaque fois qu'un client se connecte à lui. Chaque client doit accéder à la même instance de cette ressource. Je voudrais initialiser cette ressource sur le StartUp du WebService. Y a-t-il une chance de le faire avec WCF Ria Services?WCF Ria DomainService - Initialiser WebService au démarrage

EDIT: Bon, ne le mentionnez pas. Je voulais l'utiliser pour un objet DbContext global. Ce n'est pas une bonne idée de toute façon, car il y aura plusieurs threads gérés par HttpApplication qui accèdera au DbContext simultanément. Je vais changer mon implémentation en une approche "par thread", respectivement "par HttpContext". Merci quand même.

Répondre

1

Vous pouvez définir une classe qui contient une propriété statique pour cette ressource. Dans le DomainService, vous pouvez ensuite accéder à cette propriété. Il serait alors initialisé seulement quand il est accédé la première fois.

Exemple:

public class ResManager { 
    public static MyObject {...} 
} 

Dans le DomainService:

public IQueryable<SomeClass> GetSomeObjects() 
{ 
    // you can access it here and it will not be initialized 
    // every time the DomainService is called 
    MyObject obj = ResManager.MyObject; 
    return new List<SomeClass>().AsQueryable(); 
} 

Si vous voulez initialiser lorsque le service est démarré, alors vous devriez être en mesure de le faire dans la classe Global.

+0

J'ai essayé ceci avec un objet DbContext statique. Maintenant, je reçois l'erreur de chargement: "DbContext a été éliminé". J'ai vérifié les appels au constructeur DbContext et au destructeur. Le dernier n'est pas appelé avant l'arrêt de l'application. Que se passe t-il ici? – 0xbadf00d

+0

Mise à jour de mon message initial. – 0xbadf00d

Questions connexes