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:
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>
Plusieurs façons de résoudre ce problème:
Installez MVC sur le serveur Web (ce qui n'est pas toujours possible).
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
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.
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
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)
Terminé