Я пытаюсь развернуть новый проект asp.net mvc для Azure для производства. Все работает локально, но при развертывании у меня возникают проблемы с сборками.Ошибка сборки сборки Microsoft.Web.Administration на azure
При навигации к большинству страниц, я начал получать ошибку:
Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
Используя информацию из: https://stackoverflow.com/a/8824250/1411764 Я поймал исключение:
Could not load file or assembly 'Microsoft.Web.Administration,
Version=7.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or
one of its dependencies. The system cannot find the file specified.
Microsoft.Web.Administration
-видимому, является узел IIS.
Я затем добавил Microsoft.Web.Administration
к проекту с использованием Nuget.
Теперь я застрял с новой ошибкой:
Could not load file or assembly 'Microsoft.Web.Administration' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Я попытался добавить привязку перенаправления в web.config
<dependentAssembly>
<assemblyIdentity name="Microsoft.Web.Administration" publicKeyToken="31BF3856AD364E35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-7.9.0.0" newVersion="7.9.0.0" />
На данный момент она ломает сразу и я не могу загрузить какую-либо страницу. (Кажется, хуже, чем когда у меня не было дополнительной dll.
Я читал много похожих сообщений, но, похоже, не могу понять. Надеюсь, я делаю что-то простое из-за непонимания в отношении Azure . Любая помощь будет высоко ценится
Обновлено информация
Щелчок правой кнопкой мыши свойства для справки Microsoft.Web.Administration
:.
Copy Local: True
Продолжительность Версия v2.0.50727
Версия: 7.0.0.0
Вызов сборки: Microsoft.WebMatrix.Core, Version = 8.1.0.0, культура = нейтральной, PublicKeyToken = 31bf3856ad364e35
Update 2 - от комментарии:
После установки привязки к 7.0.0.0
он теперь снова компилируется на сервере и может отображать некоторые страницы, но я все еще поймал предыдущую ошибку.
Could not load file or assembly 'Microsoft.Web.Administration, Version=7.9.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies.
The located assembly's manifest definition does not match the assembly reference.
(Exception from HRESULT: 0x80131040)
Я полагаю, что из этого NuGet только поставляемой версии 7.0.0.0
однако что-то думает, что нуждается в 7.9.0.0
.
Update 3: Успех
Я начал искать в номер версии различий и нашел этот stack question, который объясняет некоторые различия между IIS и IISExpress.
На данный момент я сменил перенаправление с 7.9.0.0
на 7.0.0.0
, который, похоже, решил проблему.
<bindingRedirect oldVersion="0.0.0.0-7.9.0.0" newVersion="7.0.0.0" />
Сборка теперь работает, и страницы загружаются.
Это решение кажется очень взломанным. Является ли привязка к плохой практике более низкой версии или может вызвать проблемы в будущем? Я обеспокоен тем, что мне следует обратиться к коду, вызывающему разные версии IIS.
Является ли это веб-ролью или веб-сайтом? – haim770
Вы можете проверить FileInfo для этой Microsoft.Web.Administration.dll и добавить AssemblyInfo и версию файла DLL, я подозреваю, что они могут не соответствовать 100%. –
Попробуйте включить журнал Fusion, чтобы получить больше информации о проблемах с точной привязкой. Http://stackoverflow.com/questions/4679279/debug-net-assembly-binding-aka-find-what-dll-is-used-and-why –