Nous recevons un problème permettant à chaque fois que nous copions chaque fois une DLL dans le répertoire bin, notre domaine principal sur le site Web mroette à une halte et le seul moyen de la ramener est en redémarrant le "service de publication de la publication". < / p>
Nous exécutons un site Web contenant un certain nombre d'applications IIS exécutant un serveur unique dans lequel chacune de ces applications est configurée pour exécuter différents pools d'applications. P>
Nous avons une grande base de code qui contient plus de 280 pages ASPX sur le site. Notre domaine principal contient environ 100 pages ASPX tandis que les sous-domaines contiennent 15 ou 20 chacun. p>
Lorsque nous effectuons une construction, nous générons actuellement une bande de DLL que nous copions manuellement dans le répertoire des serveurs de production. Dès que nous le faisons, les IIS lancent évidemment un recyclage de la compilation de chacune des pages ASPX et du code derrière. À ce stade, le site serre essentiellement à une halte (parfois il doit être redémarré - en redémarrant le service de publication Web - pour la réveiller à nouveau). p>
La chose curieuse est, cela ne se produit que lorsque nous déployons dans l'application principale de domaine IIS, c'est-à-dire le www. Si nous déployons un fichier bin dans le sous-domaine de la même manière, cela fonctionne presque instantanément. p>
Même si je fais un IISRESET.EXE, cela ne semble pas résoudre le problème. P>
Certaines spécifications: p>
Toute aide serait appréciée. Merci d'avance. p>
3 Réponses :
Pouvez-vous arrêter ce site Web dans IIS pendant que vous copiez les dll, puis recommencez-le? Parce qu'il n'arrêtera pas d'autres sites Web hébergés dans la même IIS. P>
Nous avons essayé cela plusieurs fois mais n'a pas aidé. Cela ne réalise pas nécessairement ce que nous recherchons de toute façon (c'est-à-dire expliquer pourquoi le déploiement vers le www nécessite le redémarrage tandis que les sous-domaines prennent quelques secondes pour recycler)
Autant que je sache, il n'est pas nécessaire de faire IISRESET lorsque vous ajoutez une DLL au dossier BIN. La DLL doit être chargée automatiquement de la corbeille. P>
Vous devriez faire IISRESET lorsque vous ajoutez une nouvelle DLL au cache de montage global. P>
Ceci est une option, mais il est plus sûr de définir une application app_offline.htm dans votre racine, puis copiez la DLL de manière à ce que tous les verrouillages existants possibles sur votre DLL sont publiés.
IISRESET ne va pas voler sur un serveur qui héberge plusieurs sites, pour lesquels vous n'avez changé qu'un seul.
@Jessebuchanan souvent si un IISRESET ne volera pas, un recyclage de pool d'applications ciblé pourrait
Lorsque vous mettez un fichier En savoir plus sur Fondamentalement, si vous placez un fichier avec ce nom à la racine d'un répertoire d'applications Web, ASP.NET 2.0 fermera l'application, déchargez le domaine d'application du serveur et arrêtez de traiter toutes les nouvelles demandes entrantes pour cela. application. ASP.NET répondra également à toutes les demandes de pages dynamiques de la demande en renvoyant le contenu du fichier app_offline.htm (par exemple: vous voudrez peut-être avoir un message "Site en construction" ou "Down pour la maintenance") . p>
Ceci fournit un moyen pratique de supprimer votre application lorsque vous apportez de gros changements ou de copier dans de nombreuses fonctionnalités de la nouvelle page (et vous souhaitez éviter le problème gênant des personnes frappant et activant votre site au milieu d'une mise à jour de contenu. ). Il peut également être un moyen utile de déverrouiller immédiatement et de décharger une base de données SQL Express ou d'accès dont les fichiers de données .MDF ou .mdb sont résidant dans le répertoire / app_data. P>
Une fois que vous avez supprimé le fichier app_offline.htm, la requête suivante dans l'application entraînera à nouveau ASP.NET pour charger à nouveau l'application et l'application, et la vie continuera à la normale. P>
blockQuote> app_offline.htm code> dans le fichier wwwroot de votre domaine principal, le site IIS passe hors ligne. Ceci est le comportement par défaut de IIS comme décrit Scott GU. Lorsque vous faites, toutes les DLL peuvent être écrasées en toute sécurité. Et lorsque vous supprimez le fichier
app_offline.htm code> Votre application sera démarrer la prochaine fois qu'une requête vient. P>
app_offline.htm code> Ici et ici . p>
Le principal problème est-il causé par les verrous aux DDLS qui ne sont pas libérés - et nous devrons donc redémarrer le service dans tous les cas pour récupérer le serveur?
Cela pourrait être le problème. Mais la bonne façon de mettre à jour votre application Web dans IIS est de mettre d'abord une App_offline.htm dans votre racine, puis mettez à jour le site pour éviter de verrouiller et d'autres problèmes tels que vous le souhaitez. Un IISRESET n'est pas nécessaire lorsque vous utilisez l'app_offline.htm. Lorsque vous utilisez VS2010 avec TFS2010 et que vous obtenez une dernière version VS2010 mettra également une application App_offline.htm dans votre racine et la supprime lorsque tous les fichiers sont récupérés, voir cette question à propos de celui-ci Stackoverflow .Com / Questions / 3965346 / ... .
Merci j'apprécie l'aide avec ça. J'aimerais toujours comprendre pourquoi cela nécessite un redémarrage et des causes possibles du problème - toutefois que votre suggestion améliore la convivialité.