web-dev-qa-db-fra.com

Impossible de charger le fichier ou l'assembly 'System.Web.Razor' ou l'une de ses dépendances

J'ai utilisé Umbraco 4.11.6 dans mon site Web (application Web). Mon site Web fonctionne sur localhost (testé à partir de Visual studio 2012 et IIS (v7)), mais lorsque je l'exécute à partir de l'espace Internet, j'ai une erreur. L'erreur était:

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

Trace de chargement de l'assembly: Les informations suivantes peuvent être utiles pour déterminer pourquoi l'assembly 'System.Web.Razor' 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 existe une pénalité de performances 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].

Trace de la pile:

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

[FileLoadException: impossible de charger le fichier ou l'assembly 'System.Web.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' ou l'une de ses dépendances. La définition du manifeste de l'assembly localisé ne correspond pas à la référence de l'assembly. (Exception de HRESULT: 0x80131040)] System.Reflection.RuntimeAssembly._nLoad (AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark & ​​stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFoolSec, Boolean
System.Reflection.RuntimeAssembly.InternalLoadAssemblyName (AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark & ​​stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrosps2)
System.Reflection.RuntimeAssembly.InternalLoad (String assemblyString, Evidence assemblySecurity, StackCrawlMark & ​​stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +242
System.Reflection.RuntimeAssembly.InternalLoad (String assemblyString, Evidence assemblySecurity, StackCrawlMark & ​​stackMark, Boolean forIntrospection) +17 System.Reflection.Assembly.Load (String assemblyString) +35
System.Web.Configuration.CompilationSection.LoadAssemblyHelper (String assemblyName, Boolean starDirective) +122

[ConfigurationErrorsException: impossible de charger le fichier ou l'assembly 'System.Web.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' ou l'une de ses dépendances. La définition du manifeste de l'assembly localisé ne correspond pas à la référence de l'assembly. (Exception de HRESULT: 0x80131040)]
System.Web.Configuration.CompilationSection.LoadAssemblyHelper (String assemblyName, Boolean starDirective) +12761078
.
System.Web.Compilation.BuildManager.CallPreStartInitMethods (String preStartInitListPath) +203
System.Web.Compilation.BuildManager.ExecutePreAppStart () +152
System.Web.Hosting.HostingEnvironment.Initialize (ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException51)

[HttpException (0x80004005): Impossible de charger le fichier ou l'assembly 'System.Web.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' ou l'une de ses dépendances. La définition du manifeste de l'assembly localisé ne correspond pas à la référence de l'assembly. (Exception de HRESULT: 0x80131040)]
]

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

une partie de WebConfig:

<runtime>
<!-- Old asp.net ajax Assembly bindings -->
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="4.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="4.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
  </dependentAssembly>
</assemblyBinding>
23
Jahan

Plusieurs façons de résoudre ce problème:

  1. Installez MVC sur le serveur Web (ce qui n'est pas toujours possible).

  2. Dans Visual Studio, vous pouvez définir des DLL à copier en local lors de la construction, consultez l'article suivant (veuillez noter que les DLL MVC ont légèrement changé de nom mais cela vous donne le processus) http://haacked.com/archive/2008/ 11/03/bin-deploy-aspnetmvc.aspx

  3. Copiez les DLL appropriées de votre GAC dans le dossier bin du site parapluie. Pour ce faire, ouvrez "% windir%\Microsoft.NET\Assembly\GAC_MSIL" dans l'Explorateur et vous trouverez toutes les DLL installées dans le GAC et vous pouvez copier les versions appropriées dans votre projet. Ceci est similaire à la méthode ci-dessus mais contourne la construction du projet.

En termes de fichiers, vous aurez probablement besoin de plus que System.Web.Razor.dll, mais cela fonctionnera pour tous les fichiers manquants.

18
gavstorey

Réinstaller le package Microsoft.AspNet.Razor , comme ADreNaLiNe-DJ publié . La meilleure façon de procéder consiste à utiliser la commande Update-Package, Car la commande Install-Package Ne fournit pas d'option pour forcer une réinstallation, voir docs .

PM> Update-Package Microsoft.AspNet.Razor -reinstall
9
Yasel

Aucune de ces solutions ne m'a aidé: soit parce que je ne peux rien installer sur le serveur soit parce que je préfère ne pas inclure directement les DLL sans utiliser Nuget.

La solution que j'ai utilisée consiste à installer/réinstaller le package de nuget nommé Microsoft.AspNet.Razor (Microsoft ASP.Net Razor 2.0.20710)

4
ADreNaLiNe-DJ
  1. Supprimez les dossiers Nuget clear "Temp".
  2. Supprimez le package Nuget de la source du projet, puis réinstallez le package Nuget à l'aide du gestionnaire de packages.
  3. Supprimer le dossier bin.
  4. Projet propre et projet de construction.
  5. Exécutez le projet.

Terminé

3
Suraj Patel

Je ne voulais pas installer Visual Studio et l'environnement de développement, j'ai donc installé AspNetMVC4Setup.exe sur la machine Windows Server 2016 et cela a résolu le problème. Le programme d'installation a été téléchargé à partir du site Web de Microsoft.

Properties of AspNetMVC4Setup.exe file

2
Shantu