2009-11-19 4 views
1

J'ai une classe qui implémente IHttpModule dans un assembly séparé d'un site Web. La mise en œuvre du module intercepte les demandes et réécrit les URL pour le site Web.Formulaires Web ASP.NET IHttpModule Singleton

Les mappages sont stockés dans une classe avec l'URL demandée et l'URL de destination.

Le deuxième exemple, MTSingleton, de http://devhood.com/Tutorials/tutorial_details.aspx?tutorial_id=486 est-il approprié pour créer la liste de mappage? Y a-t-il une meilleure approche à partir de la mise en œuvre du module?

Edit: Mon mauvais, ceci est pour IIS 6.0 et .NET 3.5 SP1

Répondre

3

On dirait que vous cherchez à créer les applications objet une fois dans votre cycle d'application. Il semble que vous essayez d'empêcher que cela ne soit créé à plusieurs reprises par requête. (Veuillez préciser si je me trompe.)

Regardez les méthodes au IHttpModule. En supposant que vous travaillez avec IIS 7.0, the ASP.Net lifecycle, vous verrez que la méthode Init() est déclenchée une fois. Ce qui signifie, il est déclenché une fois par cycle de vie de l'application. Ainsi, lancez le serveur Web, la première requête lancera Init() en vitesse, puis les requêtes suivantes n'auront plus besoin d'être déclenchées tant que le cycle de l'application du serveur Web n'aura pas été actualisé.

Vous devriez être en mesure de déplacer votre code de création de mappages en toute sécurité dans la méthode Init(), qui devrait vous fournir les sauvegardes que vous recherchez avec un type d'initialisation multithread singleton. Vous devriez toujours avoir des sauvegardes multi-thread autour de votre objet de mappage, mais la méthode Init() du IHttpModule devrait vous donner l'effet feu-une-fois-fait que vous recherchez.

+0

Oui, le premier paragraphe est ce que j'essaie d'accomplir. J'utilise IIS 6.0, Init at-il toujours le même comportement? – blu

+0

Cela semble se comporter de la même manière dans IIS 6.0, Init est appelé une seule fois. – blu

+0

Je crois que IIS6 présente le même comportement, oui. – jro

Questions connexes