web-dev-qa-db-fra.com

Impossible de charger le fichier ou l'assembly 'System.Web.Mvc'

Ma nouvelle application Web ASP.NET MVC fonctionne sur mon poste de travail de développement, mais ne s'exécute pas sur mon serveur Web ...


Erreur serveur dans l'application '/'.


Erreur de configuration

Description: Une erreur s'est produite lors du traitement d'un fichier de configuration requis pour traiter cette demande. Veuillez consulter les détails de l'erreur ci-dessous et modifier votre fichier de configuration en conséquence.

Message d'erreur de l'analyseur: Impossible de charger le fichier ou l'assembly 'System.Web.Mvc, version = 1.0.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35' ou l'une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.

Erreur de source:

Line 44:         <add Assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 45:         <add Assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 46:         <add Assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 47:         <add Assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
Line 48:         <add Assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

Fichier source: C:\inetpub\www.exemple.org\web.config Ligne: 46

Assembly Load Trace: Les informations suivantes peuvent être utiles pour déterminer pourquoi l'assembly 'System.Web.Mvc, version = 1.0.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35' n'a pas pu être chargé.

 WRN: la journalisation de la liaison avec Assembly est désactivée. 
 Pour activer la journalisation des échecs de liaison avec Assembly, définissez la valeur de registre [HKLM\Software\Microsoft\Fusion! EnableLog] (DWORD) sur 1. 
 Remarque: La journalisation des échecs de liaison avec l'assemblage a eu un effet négatif sur les performances. 
 Pour désactiver cette fonctionnalité, supprimez la valeur de registre [HKLM\Software\Microsoft\Fusion! EnableLog]. 
.

Informations de version: Microsoft .NET Framework Version: 2.0.50727.3053; Version ASP.NET: 2.0.50727.3053


Dois-je installer le fichier AspNetMVCBeta-setup.msi sur le serveur? Ou existe-t-il un autre programme d'installation pour les serveurs?

enter image description here

197
Zack Peterson

Je viens d'écrire un post sur ce blog. Vous pouvez installer ASP.NET MVC sur votre serveur OR vous pouvez suivre les étapes ici .


EDIT: (par jcolebrand) Je suis passé par ce lien, puis j'ai eu le même problème que Victorci-dessous , je vous suggère donc d'ajouter ces éléments:

* Microsoft.Web.Infrastructure
* System.Web.Razor
* System.Web.WebPages.Deployment
* System.Web.WebPages.Razor
213
Haacked

J'ai rencontré le même problème que sgriffinusa. En plus des références, l'article de Phil suggère: http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx . J'ai ajouté ces:

* Microsoft.Web.Infrastructure
* System.Web.Razor
* System.Web.WebPages.Deployment
* System.Web.WebPages.Razor

Godaddy Deployment a parfaitement fonctionné. Désactivez les erreurs personnalisées et ajoutez des références pour les corriger. Cela devrait vous conduire dans la bonne direction.

41
Victor Juri

L'installation de MVC directement sur votre serveur Web est une option, car les assemblages seront ensuite installés dans le GAC. Vous pouvez également bin déployer les assemblys, ce qui peut aider à garder votre serveur à l'écart des assemblys en pré-version jusqu'à ce qu'une version finale soit disponible.

Phil Haack a publié un article dans Nice il y a quelques jours sur la façon de déployer MVC avec votre application. Il n'est donc pas nécessaire d'installer directement:

http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx

26
Matt Rudder

J'ai rencontré le même problème en essayant de déployer mon application Web MVC3 Razor sur un hébergement mutualisé GoDaddy. Il y a quelques autres fichiers .dll qui doivent être référencés. Détails ici: http://paulmason.biz/?p=108

En gros, vous devez ajouter des références aux éléments suivants en plus de ceux répertoriés dans le post de @ Haacked et les configurer pour un déploiement local, comme décrit.

  • Microsoft.Web.Infrastructure
  • System.Web.Razor
  • System.Web.WebPages.Deployment
  • System.Web.WebPages.Razor
25
sgriffinusa

Dans VS2010, cliquez avec le bouton droit de la souris sur le projet dans l'explorateur de solutions et sélectionnez "Ajouter des dépendances déployables". Cochez ensuite les cases relatives à MVC dans la boîte de dialogue suivante.

Cela crée un dossier '_bin_deployableAssemblies' dans le projet qui contient tous les fichiers .dll mentionnés dans d'autres réponses. Je crois que ceux-ci sont copiés dans le dossier bin lors de la création d'un package de déploiement.

13
warrickh

Solution simple. Dans VS2010, cliquez avec le bouton droit sur votre projet MVC, sélectionnez "Ajouter des dépendances déployables ...", sélectionnez les options souhaitées, puis cliquez sur OK.

9
Axle

Avait le même problème et a ajouté toute l'Assemblée qu'ils ont dit, mais toujours eu la même erreur.

s’avère que vous devez faire le "version spécifique" = False.

Specific version should be false.

6
Romeo

Nous voulons l'ajouter parce que nous créons une bibliothèque de classes qui l'utilise.

Pour moi c'est ici ...

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies

6
Dave Shinkle

Solution simple et rapide: J'ai rencontré ce problème avec Microsoft.AspNet.Mvc -Version 5.2.3 et après avoir parcouru tous ces sujets, j'ai trouvé la solution la plus simple. .

Il suffit de suivre les étapes suivantes:

  1. Ouvrez NuGet Package Manager dans Visual studio pour votre projet.
  2. Rechercher Microsoft.AspNet.Mvc
  3. Une fois trouvé, changez l'action en Désinstaller et désinstallez-le
  4. Une fois cela fait, réinstallez-le et essayez-le maintenant

Cela corrigera automatiquement tous les problèmes de références. Voir l'image ci-dessous:

enter image description here

6
Muhammad Amir

Hanselman a également un poste similaire. BIN Déploiement de ASP.NET MVC 3 avec Razor sur un serveur Windows sans que MVC soit installé

Pour moi, la solution "Copier Local = true" était insuffisante car les références de projet de mon site Web n'incluaient pas toutes les dll manquantes. Comme Scott le mentionne dans son article, je devais également obtenir des DLL supplémentaires dans le dossier suivant de ma boîte de développement: C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Pages Web\v1.0\Assemblies. Le message d'erreur m'a indiqué quelle dll était manquante (System.Web.Infrastructure, System.Web.Razor, etc.). J'ai continué à ajouter chaque dll manquante, une par une, jusqu'à ce que cela fonctionne.

3
James Lawruk

J'ai fait un "Package de mise à jour - réinstaller Microsoft.AspNet.Mvc" pour le réparer dans Visual Studio 2015.

3
Olaj

Si vous n'utilisez PAS un fournisseur d'hébergement et que vous avez accès au serveur pour l'installation ... Installez ensuite les outils de mise à jour de MVC 3, faites-le ... cela vous évitera des heures de problèmes sur un serveur Windows 2003/IIS6. , J’ai commenté cette page ici Nismet.Core.dll ne correspond pas au numéro de version

3
Tom Stickel

Vérifiez également la version de Assembly dans le fichier web.config dans votre dossier Views et assurez-vous qu'elle correspond. J'oublie parfois qu'il y a un 2e web.config à cet endroit.

2
Dave

J'ai eu le même problème avec un tas de fichiers Assembly après avoir déplacé le projet vers une autre solution.

Pour moi, le fichier web.config essayait d'ajouter cet assemblage:

<add Assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

Je pensais que la référence dans le projet pointait vers la version 3.0.0.0 (cliquez sur la référence et faites défiler vers le bas des propriétés). Par conséquent, je viens de changer la version de référence dans le fichier web.config.

Je ne sais pas s'il s'agissait simplement d'un bug. Le problème avec l'ajout de toutes les autres références était que les références apparaissaient dans le fichier de configuration, mais que ce n'était pas du tout référencé dans le projet (dans l'explorateur de solutions) et que les fichiers nécessaires n'étaient pas copiés avec le reste des fichiers du projet. probablement en raison de ne pas être "copy local = true"

À présent, je n’étais pas en mesure de trouver ces assemblages dans les assemblages supplémentaires (en cliquant avec le bouton droit de la souris sur la référence et en essayant de les ajouter à partir des assemblages ou des extensions). Au lieu de cela, j'ai créé une nouvelle solution MVC qui a ajouté tous les assemblys et références dont j'avais besoin, puis les a trouvés sous les nouvelles références de projets dans l'explorateur de solutions et leur chemin dans la fenêtre des propriétés de la référence.

Ensuite, j'ai juste copié les bibliothèques dont j'avais besoin dans l'autre projet et les ai référencées.

2
Mikael Puusaari
2
tugberk

Le fichier web.config est un élément important à prendre en compte. Certains packages peuvent modifier vos redirections sur les liaisons, causant des dégâts considérables (le package non autorisé était dans le package interne, ce que je n’ai pas supprimé.). ne crée aucune redirection de liaison, par exemple en supprimant le nœud dupliqué et incorrect qui résout ce problème

    <runtime>
        <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>


                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
                <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
                <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0"/>
                <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
                <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>


                <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="SimpleInjector" publicKeyToken="984cb50dea722e99" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.3.2.0" newVersion="3.3.2.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.4.9.5" newVersion="1.4.9.5"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>

en supprimant les lignes 8 à 24 corrige la construction.

1
PBo

J'ai ajouté "Microsoft ASP.NET Razor" en utilisant Manage NuGet Packages.

Avec Ajouter des références, pour une raison quelconque, je n'avais que System.Web.Helpers 1.0.0 et 2.0.0 ... mais pas 3.0.0.

Une autre option, qui fonctionnait bien, consistait à supprimer les références à System.Web.Mvc et System.Web.Http ..., puis à les ajouter à nouveau aux emplacements de package dans le fichier csproj (vous pouvez très facilement éditer le projet avec un éditeur de texte):

<Reference Include="System.Web.Http">
  <HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll</HintPath>

<Reference Include="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll</HintPath>
0
Brian Rice

Après avoir tout essayé et toujours échoué, c’était ma solution: je me suis souvenu que j’avais eu la dernière mise à jour de la version de MVC dans mon studio Visual Studio. peut-être que ça va aider quelqu'un ...

0
Matan L

J'utilise Jenkins avec des projets .net et j'ai eu des problèmes avec les références MVC 4.

J'ai finalement résolu mon problème en utilisant une fonctionnalité de moteur de recherche de référence .Net basée sur le registre en utilisant:

"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft.NETFramework\v2.0.50727\AssemblyFoldersEx"

Vous pouvez créer une sous-clé et définir la clé par défaut sur "c:\myreferenceedir" par exemple.

Cela m'a sauvé avec les versions MVC et également les pages Web ASP.net.

Utile pour ajouter des références à la "boîte de dialogue Ajouter une référence"

http://dhakshinamoorthy.wordpress.com/2011/12/04/how-to-register-your-net-Assembly-in-gac-and-make-it-show-in-add-reference-) dialogue /

0
Jenzo

Comme d'autres l'ont mentionné, ajoutez ces références aux studios visuels avec Copy Local défini sur true. (J'ai aussi dû ajouter System.Web.Webpages)

Microsoft.Web.Infrastructure
System.Web.Razor
System.Web.WebPages.Deployment
System.Web.WebPages.Razor
System.Web.Webpages
0
roo2