Bien qu'il est précieux peu de documentation sur la méthode AppInitialize(), vous avez raison dans votre hypothèse que toute la classe dans votre dossier App_Code qui contient une signature de méthode comme ceci:
public static void AppInitialize()
sera invoqué lorsque le L'application Asp.Net démarre. Rappelez-vous que App_Code est un dossier spécial sur Asp.Net et que tout ce qu'il contient est traité différemment. Bonne chance pour trouver de la documentation sur toutes les petites bizarreries (comme celles mentionnées ci-dessus) du dossier App_Code.
Une autre chose à retenir est cependant qu'une seule classe peut contenir une signature pour la méthode AppInitialize() ou bien vous obtiendrez une erreur de compilation lors de l'exécution de ce type:
La méthode AppInitialize est définie à la fois dans 'App_Code.SomeClassOne' et dans 'App_Code.SomeClassTwo'.
Ainsi, alors que cela est parfaitement valable:
public class SomeClassOne
{
public static void AppInitialize()
{
HostingEnvironment.Cache["InitializationTimeOne"] = DateTime.Now;
}
}
Cela va générer l'erreur du compilateur je l'ai mentionné ci-dessus:
public class SomeClassOne
{
public static void AppInitialize()
{
HostingEnvironment.Cache["InitializationTimeOne"] = DateTime.Now;
}
}
public class SomeClassTwo
{
public static void AppInitialize()
{
HostingEnvironment.Cache["InitializationTimeTwo"] = DateTime.Now;
}
}
J'espère que cela efface un peu les choses pour vous :)
Ceci est très utile. Une idée de l'endroit où trouver d'autres exemples de comportements spéciaux App_Code? –
J'ai eu ce travail dans un service Web WCF pendant un certain temps, et soudainement, il a mystérieusement cessé de fonctionner. Si j'exécute le Webservice dans Visual Studio, l'initialisation a lieu, mais si je le déploie sur IIS, aucune initialisation ne semble avoir lieu. Je pourrais jurer que cela fonctionnait, et maintenant tout à coup ça ne l'est pas. Des idées? – Farinha
Trouvé le problème. J'ai changé le "Build Action" sur le fichier .cs qui contenait l'initialisation de "Content" à "Compiler" dans une tentative de ne pas avoir le dossier "App_Code" copié dans le dossier de publication Webservice. Eh bien, cela ne peut pas être fait ... – Farinha