2009-10-08 7 views
3

J'ai une application ASP.NET avec de nombreux fichiers .resx (ressource) utilisés pour les contrôles et les pages utilisateur localisées.Le domaine de l'application redémarre lorsque les modifications du fichier .resx. Un moyen d'éviter cela?

Nous voudrions que ces fichiers soient modifiables à la volée.

Cependant, nous avons remarqué que la modification de ces fichiers sur le serveur Web provoque le domaine de l'application de recharger, ce qui provoque le serveur de ralentir pendant environ une minute pendant le redémarrage du domaine de l'application.

est-il un moyen de permettre la modification de ces fichiers sans que le domaine de l'application pour redémarrer?

Répondre

7

Il existe plusieurs variantes de cette question sur Stackoverflow; pour répéter la réponse, oui, c'est certainement possible.

Comme beaucoup de .NET, les fournisseurs de ressources sont extensibles.

Je dirais que les fournisseurs de ressources intégrées (qui compilent .resx à .resources) sont un décalage regrettable pour les déploiements Web centrés sur.

Si vos paramètres sont principalement des chaînes, vous pouvez brancher dans un simple UpdatableResXResourceProvider qui utilise le ResXResourceReader intégré pour lire des fichiers .resx existants *. Les résultats sont mis en cache dans le cache de l'application.

Aucun assemblages sont générés - mises à jour sont lues immédiatement comme ils seraient avec tout autre basé sur des fichiers CacheDependency - un certain nombre de mises à jour peut être appliqué à l'exécution.

La seule réserve est que si vous ne voulez pas désactiver INTÉGRÉE dans FCNS, vous devez déplacer les fichiers * .resx à l'abri dossier App_Data (trivialement fait avec une étape de post-construction).

Vous pouvez télécharger le UpdatableResXResourceProvider ici: http://www.onpreinit.com/2009/06/updatable-aspnet-resx-resource-provider.html

1

Ce blog post devrait vous aider. Je soupçonne son ceci:

Le nombre de re-compilation (aspx, ascx ou ASax) dépasse la limite spécifiée par le paramètre dans machine.config ou web.config (par défaut est réglé sur 15)

+0

Je suis préoccupé par upping la valeur numRecompilesBeforeAppRestart. Comme décrit ici http://blogs.msdn.com/tess/archive/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles.aspx#9896689 ... il va consommer plus de mémoire. Nous avons besoin de RAM pour la mise en cache dans notre application, donc je ne pense pas que cela évoluera très bien. – frankadelic

+0

Je suis d'accord, je ne pense pas que ce soit une bonne pratique. Vous pourriez être en mesure de faire un chargement d'assemblage à travers votre application à la place afin qu'ils deviennent disponibles au lieu d'une recompilation. –

Questions connexes