Подтвердить что ты не робот

"Установленное определение манифеста сборки не соответствует ссылке на сборку"

Я развернул приложение .NET WebAPI (скомпилированное против .NET 4.5.2 и запущен локально) в службу приложений Azure.

Выброшенная там ошибка

Не удалось загрузить файл или сборку "System.Web.Mvc, Version = 4.0.40804.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35" или одну из его зависимостей. Расположенное определение манифеста сборки не соответствует ссылке на сборку.

Я проверил, что System.Web.Mvc.dll в каталоге службы приложений bin имеет размер 505504 байт - тот же размер, что и мой локальный System.Web.Mvc.dll, который является версией 4.0. 40804.0, изменен 2014-09-25 и работает без проблем. Единственное различие, которое я могу сказать, это то, что я установил .NET 4.5.2 локально, а не 4.6.1, как это делает Azure.

Запись в моем Web.config

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

но я уже пробовал

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

который тоже не работает.

Как мне изменить эту запись для моего приложения, чтобы найти System.Web.Mvc.dll?

Для справки, полное сообщение об ошибке:

Ошибка сервера в приложении "/".

Не удалось загрузить файл или сборку "System.Web.Mvc" или одну из его зависимостей. Расположенное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

Описание: Необработанное исключение возникло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде.

Сведения об исключении: System.IO.FileLoadException: Не удалось загрузить файл или сборку "System.Web.Mvc" или одну из его зависимостей. Расположенное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

Ошибка источника:

Необработанное исключение было создано во время выполнения текущего веб-запроса. Информация о происхождении и местоположении исключения может быть идентифицирована с использованием трассы стека исключений ниже.

След загрузки сборки: следующая информация может быть полезна для определения того, почему сборка "System.Web.Mvc" не может быть загружена.

WRN: Регистрация привязки сборки отключена. Чтобы включить ведение журнала сбоев сборки, установите значение реестра [HKLM\Software\Microsoft\Fusion! EnableLog] (DWORD) на 1. Примечание. Существует некоторое ограничение производительности, связанное с протоколом сбоя привязки сборки. Чтобы отключить эту функцию, удалите значение реестра [HKLM\Software\Microsoft\Fusion! EnableLog].

Трассировка стека:

[FileLoadException: не удалось загрузить файл или сборку "System.Web.Mvc" или одну из его зависимостей. Расположенное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)]

[FileLoadException: не удалось загрузить файл или сборку "System.Web.Mvc, Version = 4.0.40804.0, Culture = neutral, 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.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark & stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +36    System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark & stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152    System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark & stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77    System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark & stackMark, Boolean forIntrospection) +21    System.Reflection.Assembly.Load(String assemblyString) +28    System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38

[ConfigurationErrorsException: не удалось загрузить файл или сборку "System.Web.Mvc, Version = 4.0.40804.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35" или одна из его зависимостей. Расположенное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)]    System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +738    System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +217    System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130    System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170    System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +92    System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean & isRefAssemblyLoaded) +290    System.Web.Compilation.BuildManager.ExecutePreAppStart() +157    System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +531

[HttpException (0x80004005): Не удалось загрузить файл или сборку "System.Web.Mvc, Version = 4.0.40804.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35" или одну из его зависимостей. Расположенное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)]    System.Web.HttpRuntime.FirstRequestInit(контекст HttpContext) +9947380    System.Web.HttpRuntime.EnsureFirstRequestInit(контекст HttpContext) +101    System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, контекст HttpContext) +261

Информация о версии: Microsoft.NET Framework Версия: 4.0.30319; Версия ASP.NET: 4.6.1055.0

4b9b3361

Ответ 1

Вы можете проверить "версии сборки" в "Инструменты" > "Диспетчер пакетов Nuget" > "Управление пакетами NuGet для решения" (VS2015). Проверьте версии сборок, используемых в ваших проектах, в решении и используйте одну версию.