2010-04-20 4 views
2

Sénario:comment isoler un sous-application du site principal sur IIS7

Je suis en cours d'exécution IIS7 sur Windows Server 2008 Web Edition

J'ai une application MVC à la route du site (application principale)

Le site hôte est de domain.com

J'ai créé une application virtuelle/testapp avec a une application ASP.Net (sous app)

Problème:

lorsque je navigue à http://domain.com l'application principale fonctionne comme prévu, mais lorsque je navigue à http://domain.com/testapp l'application sous semble être en cours d'exécution, mais le traitement de l'application principale web.config. Certaines des erreurs que je recevais impliquaient des DLL manquantes que seule l'application principale nécessitait - ceci pourrait être résolu en copiant les dll dans le dossier bin de sous-application mais ce n'est pas une solution idéale.

Question:

Je ne pense pas que ce soit un problème MVC/ASP.Net, mais plutôt un un ISS7. Comment configurer IIS7 pour que ces deux applications n'interfèrent pas les unes avec les autres?

Répondre

2

Ce problème est inhérent à la conception en raison de l'héritage des fichiers web.config. Vous avez deux solutions:

  1. Déplacer les éléments du site à la racine du site dans un sous-dossier de l'application qui se trouve côte à côte avec l'autre application et supprimer autant de web.config du parent possible.
  2. Copiez tous les éléments dans le web.config parent à l'web.config des enfants qui sont nécessaires et utiliser les éléments location pour bloquer l'héritage chez l'enfant:
< location path="." inheritInChildApplications="false" > 
    <system.web> 
    ... 
    </ system.web > 
</ location > 
+0

L'option 2 ne semble pas fonctionner car je l'ai ajoutée mais le fichier web.config parent est toujours en cours de traitement. –

+0

l'option # 1 n'est pas bonne, pour moi, parce que cela signifie que mon site sera joignable sur mydomain.com mais uniquement sur mydomain/com/app. –

+0

@DamienMcGivern - Le web.config parent sera * toujours * traité en raison de l'héritage. La seule façon de faire le travail de l'option n ° 2 est d'atténuer les balises conflictuelles au web.config parent. – Thomas

0

j'avais similaire problème quand j'ai ajouté des modules personnalisés dans mon application ASP MVC 4 fonctionnant sur IIS7. que j'ai trouvé une solution par simple suppression et l'ajout du module comme si:

<system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <modules runAllManagedModulesForAllRequests="true"> 
     <remove name="GlobalizationModule"/> 
     <add name="GlobalizationModule" type="GlobalizationHttpModule, MyWebSite"/> 
    </modules> 
    </system.webServer> 

Il est une solution spécifique à ce problème, l'espoir qu'il aide.

Ido.

Questions connexes