web-dev-qa-db-fra.com

"La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée"

J'ai déployé une application WebAPI .NET (compilée avec .NET 4.5.2 et exécutée localement) dans un service Azure App.

L'erreur jetée il y a

Impossible de charger le fichier ou l'assembly 'System.Web.Mvc, Version = 4.0.40804.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35' ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée.

J'ai vérifié que le fichier System.Web.Mvc.dll du répertoire bin du service d'application avait une taille de 505504 octets, soit la même taille que le fichier System.Web.Mvc.dll local, qui est la version 4.0. 40804.0, modifié le 2014-09-25 et travaillant localement sans problème. La seule différence que je peux dire est que .NET 4.5.2 est installé localement, et non pas 4.6.1, comme le fait Azure.

L'entrée dans mon Web.config est

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="4.0.40804.0" />
  </dependentAssembly>

mais j'ai déjà essayé

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="4.0.0.0" />
  </dependentAssembly>

qui ne fonctionne pas non plus.

Comment dois-je éditer cette entrée pour que mon application trouve le System.Web.Mvc.dll?

Pour référence, le message d'erreur complet est:

Erreur serveur dans l'application '/'.

Impossible de charger le fichier ou l'assembly 'System.Web.Mvc' ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040)

Description: une exception non gérée s'est produite lors de l'exécution de la demande Web en cours. Consultez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

Détails des exceptions: System.IO.FileLoadException: Impossible de charger le fichier ou l'assembly 'System.Web.Mvc' ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040)

Erreur de source:

Une exception non gérée a été générée lors de l'exécution de la requête Web en cours. Les informations concernant l'origine et l'emplacement de l'exception peuvent être identifiées à l'aide de la trace de pile d'exceptions ci-dessous.

Suivi de la charge d'assembly: Les informations suivantes peuvent être utiles pour déterminer pourquoi l'assembly 'System.Web.Mvc' n'a pas pu être chargé.

WRN: la journalisation de la liaison d'assemblage est désactivée. Pour activer la journalisation des défaillances de liaison avec Assembly, définissez la valeur de registre [HKLM\Software\Microsoft\Fusion! EnableLog] (DWORD) sur 1. Remarque: La journalisation des défaillances de liaison avec Assembly est pénalisée. Pour désactiver cette fonctionnalité, supprimez la valeur de registre [HKLM\Software\Microsoft\Fusion! EnableLog].

Trace de la pile:

[FileLoadException: impossible de charger le fichier ou l'assembly 'System.Web.Mvc' ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040)]

[FileLoadException: impossible de charger le fichier ou l'assembly 'System.Web.Mvc, Version = 4.0.40804.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35' ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040)]. Vous n'avez pas la possibilité de vous enregistrer dans le répertoire suivant: nom de fichier, nom de code de chaîne, élément de preuve de preuve, nom de fichier, nom de pile, fichier de pile, fichier de classe, fichier de référence, fichier de référence stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152 System.Reflection.RuntimeAssembly.InternalLoad (String assemblyString, Evidence assemblySecurity, StackCrawlMark & ​​stackMa IntPtr pPrivHostBinder, Boolean forIntrospection) +77 System.Reflection.RuntimeAssembly.InternalLoad (String assemblyString, Evidence assemblySecurity, StackCrawlMark & ​​stackMark, Booléen pourIntrospection) +21 System.Reflection.Assistance .CompilationSection.LoadAssemblyHelper (String assemblyName, Boolean starDirective) +38

[ConfigurationErrorsException: impossible de charger le fichier ou l'assembly 'System.Web.Mvc, version = 4.0.40804.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35' ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception à partir de HRESULT: 0x80131040)] Sautez-vous bien. Système.Web.Compilation.BuildManager.ExecutePreAppStart () +157

[HttpException (0x80004005): impossible de charger le fichier ou l'assembly 'System.Web.Mvc, version = 4.0.40804.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35' ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040)] System.Web.HttpRuntime.FirstRequestInit (HttpContext Context) +9947380 System.Web.HttpRuntime

Informations de version: Microsoft .NET Framework Version: 4.0.30319; Version ASP.NET: 4.6.1055.0

22
Alexander

Vous pouvez vérifier "Versions d'assemblage" dans Outils> Gestionnaire de paquets Nuget> Gérer les paquets NuGet pour la solution (VS2015). Vérifiez les versions des assemblages utilisés dans vos projets dans la solution et utilisez une version unique.

34
Ashish Sharma