j'ai un projet ASP.NET qui est un front-end à une base de données. En plus des grandes tables, la base de données contient quelques petites tables pour aider à normaliser les plus grandes tables avec des valeurs communes. J'ai un projet VB.NET qui charge les tables plus petites en mémoire, en utilisant des variables membres "partagées" (c'est-à-dire, "statique" dans C#), et les utilise. J'ai un appel pour charger les tables dans Global.asax - Application_Start. Cela fonctionne pendant un moment. En d'autres termes, Application_Start s'exécute lors de la première exécution de mon projet, charge les valeurs mises en cache et les conserve correctement en mémoire pendant un certain temps.tables Keeping mises en cache sur le serveur dans le projet ASP.NET
Ce que je vois (lors de l'exécution de mon projet via Visual Studio 2008 Debugger, hébergé localement) est:
A) Le code Application_Start courra plus d'une fois. Pas d'affilée, mais après que l'utilisateur a navigué vers d'autres pages, je verrai (mon point d'arrêt) un autre appel pour initialiser le cache, venant du formulaire Application_Start. Est-ce prévu?
B) La variable « partagée » qui a été définie sur True lorsque le cache a été initialisé est maintenant Faux à nouveau (ce qui ne devrait se produire lorsque la classe est d'abord chargée). De même, toutes les données qui ont été endommagées ne sont plus présentes. Autrement dit, il semble que VB décharge tous les membres partagés. Est-ce prévu?
Si ce sont les comportements attendus, est-il un moyen de faire ce que je veux? Le code est dans un module qui est également utilisé par d'autres projets (nonASP.NET), et semble fonctionner correctement pour eux. Je préfère ne pas avoir à dupliquer cette fonctionnalité pour quelque chose de spécifique à ASP.NET, mais j'aimerais savoir quelles sont mes options. Merci pour tout conseil.
Avez-vous regardé dans le EventLog sur le serveur? Sur la surface, il semble que le pool d'applications est en train de recycler. Cela peut être dû à des problèmes de serveur ou à un mauvais code ... Il devrait y avoir des événements eventlog dans ce cas. – David
Merci pour le conseil. Quand je l'exécute sur ma machine Dev en utilisant VS 2008 (juste en appuyant sur F5), où ce journal existerait-il? Est-il écrit dans la fenêtre de sortie? Ou Windows EventViewer? Ou les deux? –