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

200

Ma nouvelle application Web ASP.NET MVC fonctionne sur mon poste de travail de développement, mais ne fonctionne 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 d'erreur spécifiques 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 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.example.org \ web.config Ligne: 46

Trace de charge de l'assemblage: l'assembly Les informations suivantes peuvent être utiles pour déterminer pourquoi l'assembly 'System.Web.Mvc, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' n'a pas pu être chargé.

WRN: la journalisation des liaisons d'assemblage est désactivée.
Pour activer la journalisation des échecs de liaison d'assembly, définissez la valeur de Registre [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) sur 1.
Remarque: Il y a une pénalité de performance associée à la journalisation des échecs de liaison d'assembly.
Pour désactiver cette fonctionnalité, supprimez la valeur de Registre [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

Informations sur la version: Microsoft .NET Framework Version: 2.0.50727.3053; Version ASP.NET: 2.0.50727.3053


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

entrez la description de l'image ici

Zack Peterson
la source

Réponses:

215

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


EDIT: (par jcolebrand) J'ai parcouru ce lien, puis j'ai eu le même problème que Victor ci - dessous , donc je vous suggère également d'ajouter ceux-ci:

* Microsoft.Web.Infrastructure
* System.Web.Razor
* System.Web.WebPages.Deployment
* System.Web.WebPages.Razor
Piraté
la source
6
Remarque: Lorsque vous avez installé MVC4 (bêta actuellement), vous voudrez saisir la version 1.0 de ces DLL, vous voudrez également saisir System.Web.Helpers (au moins, je devais le faire).
Tracker1
1
-1 Votre message auquel vous vous connectez n'explique pas comment obtenir Microsoft.Web.Infrastructure sur le serveur Web via le mécanisme de publication. Devoir installer des choses directement sur un serveur, une sorte de sux.
Mark Rogers
1
avec visual studio 2010, cela est devenu beaucoup plus facile comme expliqué ici: britishdeveloper.co.uk/2011/06/…
Daniël Tulp
ou ici si vous n'utilisez pas Web Deploy britishdeveloper.co.uk/2011/05/…
Jeroen K
J'ai dû arroser le dossier bin, puis publier à nouveau, c'est-à-dire si vous n'utilisez pas Deploy Package.
Robert Koch
41

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é ceux-ci:

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

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

Victor Juri
la source
26

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

Il y a quelques jours, Phil Haack a publié un bel article 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

Matt Rudder
la source
25

J'ai rencontré ce même problème en essayant de déployer mon application Web MVC3 Razor sur l'hébergement partagé GoDaddy. Il existe quelques .dll supplémentaires qui doivent être référencés. Détails ici: http://paulmason.biz/?p=108

Fondamentalement, vous devez ajouter des références aux éléments suivants en plus de ceux répertoriés dans la publication 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
sgriffinusa
la source
Merci mec, après avoir ajouté manuellement la référence puis les déployer localement, cela a résolu le problème pour MVC3!
Stefanvds
Même chose ici. Bon conseil sur l'ajout de ces DLL supplémentaires. Merci!
Mike L
Même chose ici. Pas sur GoDaddy mais sur le serveur de mon entreprise, donc cela doit être un simple cas générique.
TJKjaer
13

Dans VS2010, cliquez avec le bouton droit 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.

warrickh
la source
9

Solution simple. Dans VS2010, faites un clic droit sur votre projet MVC, sélectionnez "Ajouter des dépendances déployables ...", sélectionnez les options souhaitées et cliquez sur ok

Essieu
la source
8

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

Suivez simplement les étapes:

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

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

entrez la description de l'image ici

Muhammad Amir
la source
7

A eu le même problème et a ajouté tout l'assemblage qu'ils ont dit, mais a toujours eu la même erreur.

s'avère que vous devez faire de la " version spécifique " = False.

La version spécifique doit être fausse.

Roméo
la source
Sinon, vous devez basculer 'Copier local' sur 'Vrai' s'il n'est pas activé,
AStopher
6

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

Dave Shinkle
la source
3

Si vous N'UTILISEZ PAS de fournisseur d'hébergement et que vous avez accès au serveur pour installer ... Ensuite, installez les outils de mise à jour MVC 3, faites-le ... cela vous fera économiser des heures de problèmes sur un serveur Windows 2003 / machine IIS6. , Je commentais sur cette page ici mismatch numéro de version Nuget.Core.dll

Tom Stickel
la source
3

En plus du poste Haack, Hanselman a également un poste similaire. BIN Déploiement d'ASP.NET MVC 3 avec Razor sur un serveur Windows sans MVC installé

Pour moi, la solution "Copier local = vrai" é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, j'avais également besoin d'obtenir des DLL supplémentaires à partir du dossier suivant sur ma boîte de développement: C: \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET Web Pages \ v1.0 \ Assemblies. Le message d'erreur m'a informé de la DLL manquante (System.Web.Infrastructure, System.Web.Razor, etc.). J'ai continué à ajouter chaque DLL manquante, une par une, jusqu'à ce que cela fonctionne.

James Lawruk
la source
3

J'ai effectué un "Update-Package –reinstall Microsoft.AspNet.Mvc" pour le corriger dans Visual Studio 2015.

Olaj
la source
3

Une considération importante est le fichier web.config, certains packages peuvent modifier vos redirections de liaison, causant des ravages (le package escroc était dans le package interne que je n'ai pas supprimé le web.config du package ou en veillant à ce que le web.config dans le package n'a pas de redirection de liaison. Par exemple, en supprimant le nœud en double et incorrect, cela 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.

PBo
la source
2

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

Dave
la source
2

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

Pour moi, le web.configfichier 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 leweb.config fichier.

Je ne sais pas si c'était juste un bug quelconque. 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 qu'elles n'étaient en fait pas du tout référencées dans le projet (à l'intérieur de l'explorateur de solutions) et que les fichiers nécessaires n'étaient pas copiés avec les autres fichiers du projet, probablement en raison de ne pas être"copy local = true"

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

Ensuite, je viens de copier les bibliothèques dont j'avais besoin dans l'autre projet et de les référencer.

Mikael Puusaari
la source
1

Après avoir tout essayé et toujours échoué, c'était ma solution: je me suis souvenu que j'avais eu une erreur lors de la dernière mise à jour de la version MVC dans mon Visual Studio, donc j'ai exécuté le projet à partir d'un autre Visual Studio (ordinateur différent) et ensuite téléchargé les DLL et cela a fonctionné. peut-être que cela aidera quelqu'un ...

Matan L
la source
0

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 des versions MVC et aussi des 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-dialog/

Jenzo
la source
0

Comme d'autres l'ont mentionné, ajoutez ces références aux studios visuels avec Copy Localset to 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
roo2
la source
0

J'ai ajouté "Microsoft ASP.NET Razor" à l'aide de 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 a fonctionné pour moi, a été de supprimer les références à System.Web.Mvc et System.Web.Http ... puis de les ajouter à nouveau aux emplacements des packages dans le fichier csproj (vous pouvez plus facilement modifier 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>
Brian Rice
la source