2010-04-12 4 views
3

En tant que Maurico et codeka d'abord, n'utilisez pas la valeur par défaut InProc sessions si vous ne souhaitez pas que vos sessions soient affectées par les recompilations de sites Web et les reclassements d'applications.Quand recompile un projet de site Web ASP.NET?

Une liste de ce qui cause recompilation tout site web:

  1. Par défaut, lorsqu'une modification est apportée à un fichier de haut niveau dans un site Web, tout le site est recompilé. Les fichiers de niveau supérieur comprennent le fichier global.asax et tous les fichiers des dossiers bin/ et App_Code/.

  2. modifier web.config

  3. une configuration incluent le changement de fichier, si le SectionInformation.RestartOnExternalChanges property est vrai

    < section name = "MyAppSettings" type = "System.Configuration.AppSettingsSection, System.Configuration, version = 2.0.0.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a " restartOnExternalChanges =" true " requirePermission = « false »/>

Notes:

  • Si vous voulez être en mesure de modifier les fichiers de haut niveau sans causer de tout le site recompilation, vous pouvez régler le optimizeCompilations attribute de l'élément de compilation dans le fichier web.config à true

Références:


Où est l'information qui indique les types de changements et les fichiers qui provoquent un projet de site Web (non du projet d'application Web) pour se recompiler?

La raison pour laquelle je demande est parce que nous ne voulons pas que les utilisateurs perdent leurs sessions. Par conséquent, nous voulons mettre à jour le site Web en direct avec des changements recompilables seulement dans les petites heures du matin, mais préférerais faire des changements au cours de la journée pour les accélérer. Nous faisons d'abord la promotion sur un serveur de mise en scène et nous l'observons, mais une liste définitive serait bien à l'avance.

+0

Si vous allez en faire un liste, faites-le wiki de la communauté pour que tout le monde (sorta) puisse l'éditer. – Earlz

+1

sur les utilisateurs perdant leurs sessions, n'utilisez simplement pas les sessions InProc. –

+0

@Earlz: J'aime le fait que seuls les utilisateurs expérimentés peuvent le modifier dès maintenant - sauve des maux de tête, et j'aime garder la responsabilité principale de l'entretien de mon bébé. @Mauricio: Excellent point. –

Répondre

5

Vous perdrez des sessions non seulement lorsque votre site Web est recompilé, mais également lorsque le processus de travail IIS est recyclé. Techniquement, cela peut arriver à tout moment (il y a des façons de le minimiser, mais je préfère architecturer des applications qui peuvent survivre aux recyclages de processus de travail de toute façon), donc si les sessions sont importantes, vous devez vraiment les stocker hors de -processus.

ASP.NET est livré avec un "serveur d'état" intégré qui est simplement un service Windows qui stocke l'état de la session. Une autre option consiste à utiliser le stockage d'état de session SQL Server.Beaucoup de gens vous diront que stocker l'état de la session dans SQL Server est un problème de performances, mais je ne suis pas d'accord: la perte de sessions due aux recyclages de processus est plus préoccupante que les performances de SQL Server. Besidess le serveur d'état ASP.NET est plus rapide si c'est ce dont vous avez vraiment besoin (et si vous voulez survivre à des cycles de puissance, vous pouvez même écrire un fournisseur personnalisé qui stocke l'état dans une base de données NoSQL!)

Questions connexes