2009-07-03 5 views
3

Fondamentalement, je veux l'effet qui se produirait si je devais éditer le fichier web.config. L'application se décharge complètement et redémarre, redonnant ainsi l'exécution à Application_Start et abandonnant tous les types créés dynamiquement par l'AppDomain désormais disparu.Comment forcer ASP.Net à invalider (et donc recharger) l'instance d'application en cours?

EDIT

que je dois faire dans mon code C# dans mon application web. Je sais que cela peut être fait; Je l'ai fait il y a longtemps mais j'ai depuis perdu le code et oublié comment je l'ai fait.

Répondre

7

Pour full trust vous pouvez utiliser HttpRuntime.UnloadAppDomain(). Si vous n'exécutez pas une confiance totale, vous pouvez modifier la dernière heure d'écriture dans le fichier web.config. Rick Strahl a enveloppé ces deux approches jusqu'à in a nice class.

+0

Ah sympa, bravo pour le lien. –

0

Si vous avez créé un pool d'applications distinct pour votre application, vous pouvez réinitialiser le pool d'applications.

En général, il est toujours préférable d'avoir un pool d'applications distinct pour chaque application.

+0

Nécessaire de le faire par programmation. –

1

Vous pouvez "toucher" le fichier web.config (c'est-à-dire le réécrire sur le disque inchangé), ou n'importe quel fichier dans le répertoire bin pour recycler l'application. Bien sûr, cela signifie que l'identité sous laquelle votre application s'exécute nécessite les autorisations appropriées.

1

Dernièrement, je semblent répondre à mes propres questions beaucoup: P

Here we go:

HttpRuntime.UnloadAppDomain(); 
+0

Veuillez noter que cette technique ne fonctionne que si votre application fonctionne sous une confiance totale. Pour un mécanisme de repli, voir ma réponse. – RichardOD

1

Si toutes les options ci-dessus échouent, vous pouvez également créer une fonction récursive sans fin en dernier recours. L'exception stackoverflow qui en résulte forcera un rechargement de l'application. (Ne le faites pas lorsque le débogueur Visual Studio est connecté)

Questions connexes