Je ne sais pas si c'est possible, mais j'aimerais avoir une fonction exécutée dès qu'un service WCF est démarré pour générer les données de cache initiales. Je ne suis pas inquiet maintenant de savoir comment implémenter le cache, ma question est strictement d'avoir la fonction exécutée au démarrage du service. Le service sera RESTful.
Le service sera finalement hébergé dans IIS et utilise .Net Framework 4.5
Ce que @KirkWoll a suggéré fonctionne, mais seulement si vous êtes dans IIS et c'est la seule méthode statique AppInitialize sous App_Code. Si vous voulez faire l'initialisation par service, si vous avez un méthode AppInitialize différente ou si vous n'êtes pas sous IIS, vous avez ces autres options:
ServiceHost.Open()
, vous pouvez donc l'initialiser làUn exemple d'usine personnalisée est illustré ci-dessous:
public class MyFactory : ServiceHostFactory
{
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
ServiceHost Host = base.CreateServiceHost(serviceType, baseAddresses);
Host.Opening += new EventHandler(Host_Opening);
return Host;
}
void Host_Opening(object sender, EventArgs e)
{
// do initialization here
}
}
}
Le moyen le plus simple consiste à créer un App_Code
dossier sous la racine de votre projet WCF, créez une classe (je l'appellerai Initializer
mais cela n'a pas d'importance. La partie importante est le nom de la méthode) comme ceci:
public class Initializer
{
public static void AppInitialize()
{
// This will get called on startup
}
}
Plus d'informations sur AppInitialize
peuvent être trouvées ici .