Je déploie un nouveau site Web comme site principal et cela fonctionne à merveille.
Toutes mes applications sous l'URL racine fonctionnent également, sauf un. C’est un système traditionnel (c # .net) très utilisé et, malheureusement, je n’ai pas accès au code source.
Lorsque j'exécute l'application existante www.monsite.com/crm, l'erreur suivante apparaît:
Server Error in '/crm' Application.
Compilation Error
Description: An error occurred during the compilation of a resource required to
service this request. Please review the following specific error details and modify
your source code appropriately.
Compiler Error Message: CS0234: The type or namespace name 'Optimization' does not
exist in the namespace 'System.Web' (are you missing an Assembly reference?)
Source Error:
Line 17: <pages>
Line 18: <namespaces>
Line 19: <add namespace="System.Web.Optimization" />
Line 20: </namespaces>
Line 21: <controls>
Source File: e:\WebSites\newsite\Web.config Line: 19
Show Detailed Compiler Output:
Show Complete Compilation Source:
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18446
L'erreur répertorie le fichier web.config du site principal, ce qui fonctionne. Cependant, cela ne se produit que lorsque j'exécute l'application sous le site principal.
Cela fonctionne sur Server 2008 R2 et IIS7
Comment puis-je corriger cela? Que puis-je essayer?
UDPDATE
Je ne sais pas si cela fait une différence, mais les références Web.Config auxquelles il fait référence dans l'erreur concernent le nouveau site Web, pas l'application existante. Je ne sais pas pourquoi la configuration du site principal est un facteur.
CLARIFICATION
Je n'ai pas accès au code source de l'application existante, je ne peux donc pas ajuster les propriétés de cette application. Coller la DLL d'optimisation sur le site ne le résout pas non plus. Cela peut fonctionner pour d'autres utilisateurs, mais pas pour moi.
SOLUTION DE CONTOURNEMENT
J'installe le nouveau site sous une autre URL et redirige le trafic vers l'URL racine vers la nouvelle URL et permet à l'application existante de fonctionner telle quelle jusqu'à ce que nous puissions la remplacer. Solution très bâclée, mais cela fonctionne pour le moment.
J'ai rencontré le même problème après avoir créé une nouvelle zone dans MVC5. Il existe un fichier auto-générer web.config. Vérifiez votre fichier web.config sous le dossier Views il y a une ligne
<add namespace="System.Web.Optimization" />
si vous en avez besoin, installez-le en utilisant la commande suivante.
Install-Package Microsoft.AspNet.Web.Optimization
sur la console du gestionnaire de paquets, comme ci-dessous
Si vous pensez ne pas en avoir besoin, supprimez simplement la ligne <add namespace="System.Web.Optimization" />
de la section suivante du fichier web.config
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<!--<add namespace="System.Web.Optimization" />-->
<add namespace="AutoParts.Web" />
</namespaces>
Vérifiez le dossier Bin
pour l'application héritée. Il se peut que vous ayez simplement besoin de déposer cette DLL. L'espace de noms System.Web.Optimization
existe depuis ASP.NET 4.5 et il est donc possible qu'il ne soit même pas pris en charge. L'héritage App pourrait être plus ancien que cela.
Dans Visual Studio .. Accédez à votre projet et consultez l'arborescence Références.
faites un clic droit sur System.Web.Optimization et choisissez Properties
cherchez la path
, vous la trouverez vide Si tel est le cas, alors recherchez dans votre PC les noms de fichier System.Web.Optimization.dll et copiez-le dans le dossier bin
de votre projet et Résolvez le
Je venais juste de découvrir: "CS0234 C # Le type ou le nom de l'espace de noms 'Optimization' n'existe pas dans l'espace de noms 'System.Web' (il vous manque une référence Assembly?") Et j'ai trouvé cette page stackoverflow. - La cause pour moi était due au fait que j'ai renommé le formulaire Web (page aspx) avec lequel je travaillais, je voulais également renommer la classe partielle publique derrière ce formulaire. Cela a entraîné le code d'erreur mentionné. J'ai ajouté "using System.Web.Optimization;
" au code derrière (C #), "nettoyé" la solution, puis "construit" puis la solution, puis "reconstruit" la solution et maintenant l'erreur est disparue et cette instruction using n'a pas été utilisée. s'en suis débarrassé. Ma solution ne comporte plus aucune erreur ni erreur, alors je me suis dit que je partagerais cette histoire étrange. Je n'ai probablement pas eu besoin d'utiliser cette déclaration "using
", mais peu importe.
Main to Area
@Html.ActionLink("My Area Home", "Index", "Home", new { area = "MyArea" }, null)
Zone à Main
@Html.ActionLink("Home", "Index", "Home", new { area = "" }, null)