7
votes

Puis-je héberger un répertoire virtuel .NET 2.0 dans le site ASP.NET 4.0?

Nous n'avons eu aucun problème à exécuter des répertoires virtuels .NET 4.0 sur 2.0 sites Web, mais le moyen opposé nous donne des problèmes. Ceci est compréhensible, mais existe-t-il un moyen de contourner ce problème? Ils fonctionnent avec différents pools d'applications ... Pouvons-nous avoir le répertoire virtuel ignorer le web.config et aller directement à la machine.config?

Nous obtenons l'erreur suivante: p>

Parser Error Message: Unrecognized attribute 'targetFramework'. Note that attribute names are case-sensitive.

Source Error: 

Line 22:   </appSettings>
Line 23:   <system.web>
Line 24:     <compilation debug="true" targetFramework="4.0" />
Line 25:     <customErrors defaultRedirect="url" mode="RemoteOnly">
Line 26:       <error statusCode="404" redirect="~/404.aspx"/>


3 Réponses :


10
votes

Ajoutez les éléments suivants dans votre root web.config xxx


1 commentaires

Comme je l'ai noté dans ma réponse, la directive ne peut pas être utilisée pour remplacer . Traduction: Malheureusement, cela ne fonctionnera pas dans tous les scénarios.



5
votes

est-il possible Pour annuler complètement un "Supérieur" Web.config dans un sous-dossier?

dans votre root Web.config: p>

  <location path="." inheritInChildApplications="false">
    <system.web>      
        <compilation debug="true" targetFramework="4.0" />
    </system.web>
  </location>


1 commentaires

Merci pour la réponse et la notification de la duplication.



1
votes

Ceci est un problème de héritage web.config, et vous ne pouvez pas surmonter toutes les problèmes avec la directive .

Nous obtenions des erreurs similaires sur des directives de configuration en double sur l'une de nos applications. Après enquête, il semble que c'est à cause de Ce numéro .

En bref, notre site Web root est ASP.NET 3.5 (qui est 2.0 avec des bibliothèques spécifiques ajoutées) et nous avons une sous-application ASP.NET 4.0.

héritage web.config provoque la sous-application ASP.NET 4.0 d'hériter du fichier web.config de l'application parent ASP.NET 3.5.

Toutefois, le web.config global.config global (ou "racine" de l'application ASP.NET 4.0, qui réside à C: \ Windows \ Microsoft.net \ Framew \ V4.0.30319 \ Config \ web.config et c: \ Windows \ Microsoft.net \ Framewrad64 \ v4.0.30319 \ config \ web.config (selon votre bitness), contient déjà des sections de configuration présentes dans le Web.config spécifique de l'application d'une application .NET 3.5.

L'application ASP.NET 4.0 essaie ensuite de fusionner la racine ASP.NET 4.0 web.config et le parent web.config (celui pour une application ASP.NET 3.5) et s'inscrit dans des doublons dans le nœud.

La directive ne peut pas être utilisée pour empêcher l'héritage des entrées . La seule solution que j'ai pu trouver est de supprimer les configure des configurations de la station mère.config, puis de

  1. Déterminez que vous n'en avez pas besoin dans votre application racine ou
  2. Mettez à niveau l'application parent sur ASP.NET 4.0 (il gagne donc d'accès aux configurettes de racine Web.config)

0 commentaires