Visual Studio peut-il redémarrer IIS Express sur une nouvelle session de débogage?

j'ai un ASP.Net application qui effectue une initialisation de base de données pendant Application_Start dans Global.asax. J'utilise IIS Express pour déboguer l'application.

je constate que si j'arrête de déboguer, vide la base de données, et redémarre à nouveau, le code Application_Start ne s'appelle pas et ma base de données n'est pas initialisée correctement, donc mon application échoue. C'est parce que L'instance IIS Express est toujours en cours d'exécution après les arrêts de débogage. Plutôt que de redémarrer, visuel Studio semble se rattacher au processus existant.

y a-t-il un moyen de changer ce comportement de sorte que le démarrage d'une nouvelle session de débogage redémarre toujours le processus d'application dans IIS Express (ou réinitialise le pool d'applications dans IIS régulier)?

alternativement, y a-t-il un moyen de forcer IIS Express à s'arrêter lorsque la session de débogage se termine?

j'ai trouvé que si je coche "activer éditer et continuer" dans la boîte de dialogue Web dans les paramètres du projet, a l'effet secondaire d'arrêter IIS Express à la fin du débogage. Mais je ne suis pas sûr de vouloir présenter les effets secondaires D'Edit et continuer juste dans le but d'arrêter IIS Express. Il y a sûrement un meilleur moyen?

Je ne sais pas si c'est important, mais c'est VS2012.

16
demandé sur Matt Johnson 2012-09-26 00:59:12

2 réponses

malheureusement, ce n'est pas réalisable par la configuration. Je peut vous proposer un autre truc, mais c'est à vous de décider si c'est mieux que le tien ou pas :)

Vous pouvez créer un événement post-build qui modifie l'horodatage d'un web.fichier de configuration. J'ai utilisé une touche.outil exe de http://www.stevemiller.net/apps/. Vous avez aussi besoin de définir "exécuter l'événement post-construction" à Always. Ainsi, votre configuration "Build Events" peut ressembler à suit:

enter image description here

Avec cette option définie à tout moment, vous lancez le débogueur web.le timestamp de configuration est en train d'être mis à jour, provoquant le redémarrage de l'application (application appdomain reload) sur la première requête - mais à ce point vous êtes déjà attaché à ce processus donc votre Application_ les points d'arrêt de l'événement devraient fonctionner.

19
répondu lowleveldesign 2016-01-18 12:58:13

Vous pouvez utiliser un PowerShell one-liner pour éviter de vous fier à une application externe:

powershell -NoProfile -Command (Get-Item "<path>\Web.config").lastwritetime=(Get-Date)

l'inspiration originale vient de ici...

6
répondu dstj 2017-03-20 10:18:23