2010-03-11 8 views
1

J'ai eu une situation sur un serveur de développement où toutes les applications ASP.Net nous avons commencé à échouer en même temps. Après quelques recherches, nous avons constaté que les paramètres de l'application, les applications 1.1 et la collection de chaînes de connexion des applications 2.0 échouaient tous. Les fichiers de configuration avaient les valeurs, mais le code retournait null. Après un peu de grattage et de recherche de la tête, j'ai pensé que peut-être la racine web.config était utilisée et les sites ignorés. Pour tester cette théorie, j'ai ajouté les paramètres de l'application requis pour l'un des sites à la racine web.config. Cela a permis au site de fonctionner.Racine web.config utilisée à la place du site web.config

Après avoir prouvé que j'ai supprimé les paramètres de la racine web.config et réinitialiser IIS. Mais maintenant, tous les sites fonctionnent à nouveau, même ceux qui ne dépendent pas des paramètres que j'avais précédemment ajoutés à la racine web.config.

Quelqu'un peut-il expliquer pourquoi cela est arrivé? Autant que je sache, le fait de toucher la racine web.config a fait que tout a recommencé, mais je n'ai aucune idée de la raison ou de l'origine du problème.

EDIT: Ceci est sur IIS 6.0 sur Windows Server 2003 SP2

+0

Peut-être que cette entrée msdn brille un peu de lumière sur votre problème? http://msdn.microsoft.com/en-us/library/b6x6shw7.aspx – Joop

Répondre

5

Ce qui aurait pu se produire dépend de la version d'IIS que vous utilisez. La racine web.config est toujours lue dans ASP.NET, mais les fichiers web.config dans les sous-répertoires IIS sont uniquement lus lorsque le sous-répertoire est défini en tant qu'application Web dans IIS. Si vous créez un fichier web.config dans un sous-répertoire IIS qui n'est pas un répertoire d'application, il ne sera pas lu. Je n'ai jamais vu ce que vous décrivez se produire, mais j'imagine que si l'état du processus IIS en cours est corrompu et ne reconnaît pas les répertoires d'application, le système de configuration peut manquer les fichiers dans les sous-répertoires.

Je pense que ce serait plus susceptible de se produire sur IIS 5.x, comme Win2000 ou XP que sur Server 2008 ou Windows 7.

+0

Ceci est IIS 6.0, et je suis assez sûr que les sites où tous configurés comme des applications. Ils ont travaillé jusqu'à maintenant de toute façon. Le processus de travail IIS est mort à quelques reprises, mais autant que je sache, c'est parce que les applications ne gérant pas les valeurs de configuration ne sont pas là. – Glenn

+2

IIS 6.0 sur Server 2003 avait toujours une métabase binaire, qui contient les définitions de ce qu'est un répertoire d'application, et ASP.NET config était essentiellement un add-on en plus de la configuration binaire IIS existante. Bien que vous puissiez éditer la métabase 6.0 en XML, elle est stockée en binaire. Ma conjecture est que la version binaire de la métabase dans la mémoire a été corrompue pendant que le serveur était en cours d'exécution, et la modification de la configuration racine a provoqué le redémarrage de l'arborescence des surveillants de fichiers dépendants qui est ASP.NET. Dans IIS 7.0, le serveur Web et ASP.NET partagent la configuration basée sur le texte, ce qui est beaucoup moins probable. – jnoss

+0

Cela semble être ce qui s'est passé. La corruption de la métabase ne m'était pas apparue. – Glenn