Я развернул приложение .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