Не удалось загрузить файл или сборку "System.Web.Razor" или одну из ее зависимостей
Я использовал Umbraco 4.11.6 на своем веб-сайте (веб-приложение). Мой сайт работает в localhost (тестируется на Visual studio 2012 и IIS (v7)), но когда я запускаю его из интернет-пространства, я получил ошибку.
Ошибка:
Не удалось загрузить файл или сборку "System.Web.Razor" или одну из его зависимостей. Расположенное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)
След загрузки сборки. Следующая информация может быть полезна для определения того, почему сборка "System.Web.Razor" не может быть загружена.
WRN: Регистрация привязки к сборке отключена. Чтобы включить ведение журнала сбоев сборки, установите значение реестра [HKLM\Software\Microsoft\Fusion! EnableLog] (DWORD) на 1. Примечание. Существует некоторое ограничение производительности, связанное с протоколом сбоя привязки сборки. Чтобы отключить эту функцию, удалите значение реестра [HKLM\Software\Microsoft\Fusion! EnableLog].
Трассировка стека:
[FileLoadException: не удалось загрузить файл или сборку "System.Web.Razor" или одну из его зависимостей. Расположенная сборка определение манифеста не соответствует ссылке на сборку. (Исключение от HRESULT: 0x80131040)]
[FileLoadException: не удалось загрузить файл или сборку. System.Web.Razor, Версия = 2.0.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35 'или одной из его зависимостей. Установленное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)] System.Reflection.RuntimeAssembly._nLoad (AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark & stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, сборка доказательствSecurity, RuntimeAssembly reqAssembly, StackCrawlMark & амп; stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +210
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: не удалось загрузить файл или сборку 'System.Web.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 'или одна из его зависимостей. установленное определение манифеста сборки не соответствует сборке Справка. (Исключение из HRESULT: 0x80131040)]
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +12761078
System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +503 System.Web.Configuration.AssemblyInfo.get_AssemblyInternal() +142 System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +334
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 appDomainCreationException) +1151
[HttpException (0x80004005): не удалось загрузить файл или сборку 'System.Web.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 'или одна из его зависимостей. установленное определение манифеста сборки не соответствует сборке Справка. (Исключение из HRESULT: 0x80131040)]
System.Web.HttpRuntime.FirstRequestInit(контекст HttpContext) +12881540 System.Web.HttpRuntime.EnsureFirstRequestInit(контекст HttpContext) +159 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, контекст HttpContext) +12722601
Информация о версии: Microsoft.NET Framework Версия: 4.0.30319; Версия ASP.NET: 4.0.30319.17929
часть 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>
Ответы
Ответ 1
Довольно много способов исправить это:
-
Установите MVC на веб-сервере (что не всегда возможно).
-
В визуальной студии вы можете установить DLL для копирования в локальную сборку, см. следующую статью (обратите внимание, что DLL MVC немного изменила имена, но дает вам этот процесс)
http://haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx
-
Скопируйте соответствующие DLL из вашего GAC в папку bin на сайте umbraco.
Для этого откройте "% windir%\Microsoft.NET\assembly\GAC_MSIL" в проводнике, и вы найдете все DLL, установленные в GAC, и вы можете скопировать соответствующие версии в ваш проект. Это похоже на вышеупомянутый метод, но обходит проект.
В отношении файлов вам, скорее всего, потребуется больше, чем просто System.Web.Razor.dll, однако это будет работать для всех отсутствующих файлов.
Ответ 2
Не все эти решения помогли мне: либо потому, что я ничего не могу установить на сервере, потому что я предпочитаю не включать DLL напрямую, не используя Nuget.
Решение, которое я использовал, - это установить/переустановить пакет nuget с именем Microsoft.AspNet.Razor(Microsoft ASP.Net Razor 2.0.20710)
Ответ 3
- Удалить Nuget очистить папки "Temp".
- Удалите пакет Nuget из источника проекта, а затем повторно установите пакет Nuget с помощью диспетчера пакетов.
- Удалить папку bin.
- Очистить проект и выполнить проект.
- Запустить проект.
Готово
Ответ 4
Переустановите пакет Microsoft.AspNet.Razor, например, ADreNaLiNe-DJ . Лучший способ сделать это - использовать команду Update-Package
, потому что команда Install-Package
не предоставляет возможность принудительно переустановить, см. docs.
PM> Update-Package Microsoft.AspNet.Razor -reinstall
Ответ 5
Я не хотел устанавливать визуальную студию и среду разработки, поэтому я установил AspNetMVC4Setup.exe на компьютере с сервером Windows 2016 и решил проблему. Установщик был загружен с веб-сайта Microsoft.
![Свойства файла AspNetMVC4Setup.exe]()
Ответ 6
Если вы находитесь под контролем источника, проверьте свои изменения, а затем удалите всю папку из обозревателя Windows, затем получите определенную версию с уровня решения и получите самую последнюю перезапись.