Question

Mon entreprise a un site Web construit dans ASP.NET et cible .net 3.5. Il est trop mutilé et massif pour être converti en .NET 4 en temps opportun. Je suis chargé de construire un système de billetterie. Je veux que ce système de billetterie soit une application complètement distincte de l'application principale. J'ai ajouté un répertoire au site Web appelé "TickettingSystem", puis dans IIS, j'ai défini ce dossier en tant qu'application, en utilisant un pool d'applications qui cible .NET 4.0. J'ai supposé que cette application ne serait pas affectée par l'application au-dessus, d'autant plus qu'elle utilise son propre pool d'applications, mais il semblerait qu'il soit affecté d'une manière ou d'une autre. Navigation vers ce répertoire avec mon application Web .NET 4 en informatique génère cette erreur:

http://www.chevtek.com/content/error.jpg

J'ai couvert les informations sensibles comme les chemins de fichier et les trucs, mais la ligne qui dit que le fichier config a un chemin d'accès au fichier de configuration de l'application parent, et non dans le fichier de configuration de l'application .net 4.

Toute information est appréciée. N'est-il pas possible de nicher une application .NET 4.0 dans une application .NET 3.5?

ÉDITER Comme demandé, voici une capture d'écran de la structure du répertoire IIS.

http://www.chevtek.com/content/iisdirectorystructure.jpg

Était-ce utile?

La solution

L'héritage Web.config n'est malheureusement pas quelque chose que vous pouvez désactiver complètement; Plus précisément, la section supérieure du web.config qui définit les sections de configuration dans le web.config ne peut pas être ignorée / remplacée dans une application enfant.

La solution est documentée Ici (ASP.NET 4 Breaking Changes Documentation); Essentiellement, vous devez déplacer les valeurs qui sont actuellement dans l'application supérieure dans un fichier de configuration spécifique à la machine / frameworkversion, puis envelopper tout (ou au moins, la plupart) de votre web root.config dans une balise de localisation avec une héritage désactivée.

Autres conseils

Avez-vous essayé de définir l'attribut "HéritinChildApplications" à "false" dans le fichier web.config du dossier parent?

Voir La réponse de Saul Dolgin à une question similaire sur la façon de procéder.

Dans mes applications, je réussis plus ou moins avec des applications imbriquées en utilisant le <location> élément avec <clear /> et des éléments similaires dans le web.config.

Ceci est un extrait d'un fichier web.config:

...
<!-- Do not inherit. -->
<location path="." inheritInChildApplications="false">
    <system.web>
        ...

L'idée est de mettre toutes les sections que vous faites ne pas veulent hériter des applications pour enfants au sein de ceux location Éléments, comme dans mon exemple ci-dessus.

En supposant que votre site actuel utilise AppPool1 ciblé sur .NET 2.0

Créez AppPool2, ciblez-le sur .NET 4.0 et utilisez-le par Dir virtuel de votre application.

Assurez-vous que les choses ne sont pas dans la configuration de la machine pour le pool d'applications. Si c'est le cas, supprimez-le simplement de votre configuration Web.

EDIT: Comme le premier port d'appel mentionné est pour s'assurer que chaque application a son propre pool d'applications. Double et triple vérifiez-le en tant que site .NET 3.5 et un site .NET 4 dans le même pool d'applications provoquera la rupture de l'ensemble du pool d'applications.

Ensuite, essayez de supprimer l'intégralité du groupe de section de script, de mon expérience, il le résout et je n'ai remarqué aucun problème

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top