Я пытаюсь развернуть новый проект asp.net mvc для Azure для производства. Все работает локально, но при развертывании у меня возникают проблемы с сборками.
При навигации по большинству страниц я начал получать ошибку:
Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
Используя информацию из: qaru.site/info/25534/... Я поймал исключение:
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 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
:
Копировать локально: True
Версия выполнения v2.0.50727
Версия: 7.0.0.0
Вызов сборки: Microsoft.WebMatrix.Core, Version = 8.1.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35
Обновление 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 manifest definition does not match the assembly reference.
(Exception from HRESULT: 0x80131040)
Я предполагаю, что Nuget предоставил только версию 7.0.0.0
, но что-то думает, что ей нужно 7.9.0.0
.
Обновление 3: Успех
Я начал изучать различия номера версии и нашел этот вопрос stack, который объясняет некоторые различия между 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.