it-swarm.com.ru

Не удалось загрузить файл или сборку System.Web.Http.WebHost после публикации на веб-сайте Azure.

Я создал веб-проект, и он хорошо работает в Visual Studio. Тем не менее, я получил следующую ошибку после публикации на веб-сайтах Azure. Что может вызвать проблему?

Не удалось загрузить файл или сборку 'System.Web.Http.WebHost, Версия = 5.0.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35 'или одна из его зависимостей. Определение манифеста локации не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

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

Сведения об исключении: System.IO.FileLoadException: не удалось загрузить файл или Сборка 'System.Web.Http.WebHost, версия = 5.0.0.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35 'или одна из его зависимостей. определение манифеста расположенной сборки не соответствует сборке ссылка. (Исключение из HRESULT: 0x80131040)

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

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

Отслеживание загрузки сборки: следующая информация может быть полезна для определить, почему сборка 'System.Web.Http.WebHost, версия = 5.0.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35 'не может быть загружена.

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

Следующее является частью файла web.config. 

  <system.web>
    <customErrors mode="Off"/>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login" timeout="2880" />
    </authentication>
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
  <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers></system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.Core" publicKeyToken="2780ccd10d57b246" />
        <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.AspNet" publicKeyToken="2780ccd10d57b246" />
        <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
133
ca9163d9

dll отсутствует в опубликованной (развернутой среде). По этой причине он работает в локальной, т. Е. Visual Studio, но не в среде веб-сайта Azure.

Просто сделайте Copy Local = true в свойствах для Assembly ( System.Web.Http.WebHost ) и затем выполните повторное развертывание, оно должно работать нормально. 

Если вы получаете аналогичную ошибку, то есть отсутствует какая-либо другая сборка, сделайте эту сборку равной copylocal = true и повторите развертывание, повторите это итеративно - если вы не уверены в ее зависимостях.

128
Naveen Vijay

Если вы все еще ищете ответ, попробуйте проверить эту ветку вопросов . Это помогло мне решить аналогичную проблему.

edit: Решение, которое мне помогло, состояло в том, чтобы запустить Update-Package Microsoft.AspNet.WebApi -reinstall из менеджера пакетов NugGet, как это было предложено Pathoschild . Затем мне пришлось удалить свой файл .suo и перезапустить VS, как это предложил Сергей Осипчук в это нить .

84
amraby

Я столкнулся с той же проблемой, и решил ее, установив для CopyLocal значение true для следующих библиотек:

System.Web.Http.dll
System.Web.Http.WebHost.dll
System.Net.Http.Formatting.dll

Я должен добавить, что я использую MVC4 и NET 4

53
Bronek

У меня работало добавление следующего раздела в файл web.config:

<configuration>
...
    <runtime>
    ...
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Http.WebHost" publicKeyToken="31bf3856ad364e35" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
        </dependentAssembly>
    ...
    </runtime>
...
</configuration>

Этот пример обозначает MVC 5.1. Надеюсь, что это поможет кому-то решить эту проблему.

33
Eadel

Для меня это начало работать после выбора «Удалить дополнительные файлы в месте назначения» в параметрах публикации файлов в настройках диалогового окна публикации.

13
Magnus Ahlin

DLL отсутствует в опубликованной (развернутой среде). По этой причине он работает в локальной, т. Е. Visual Studio, но не в среде веб-сайта Azure.

Просто сделайте Copy Local = true в свойствах для Assembly (System.Web.Http.WebHost) и затем выполните повторное развертывание, оно должно работать нормально.

10
venkat

Я использую vs2012, и я думаю, что обновление KB2781514 изменило некоторые настройки. Все мои System.Web.Http в моем проекте MVC4 изменились на false, и я продолжаю получать это сообщение. Я изменил All file in this project в свойстве publish, но оно не работает. Наконец я должен изменить Copy Local = true один за другим и решил эту проблему.

6
thanh

Я получил ту же ошибку, и я изменил свою версию с 4 на 3, и она решена:

<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
    <!-- Ensure correct version of MVC -->
    <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
    </dependentAssembly>
</assemblyBinding>
2
Ilaria

У меня была такая же проблема в моем приложении.

System.web.http.webhost not found.

Вам просто нужно скопировать файл system.web.http.webhost из основного проекта, который вы запускаете в Visual Studio, и вставить его в каталог опубликованного проекта bin

После этого может отображаться та же ошибка, но имя каталога изменяется, это может быть system.web.http. Выполните ту же процедуру, что и выше. Он будет работать после загрузки всех файлов. Это связано с тем, что пакет nuget в Visual Studio загружается из Интернета, но на сервере он не может его загрузить.

Вы можете найти этот файл в каталоге вашего проекта bin.

2
imran khan

Это случилось со мной на VS2013 (обновление 5) /ASP.NET 4.5, в проекте типа «Веб-приложение», который включает MVC и Web API 2. Ошибка произошла сразу после создания проекта и перед добавлением любого кода. Добавление следующей конфигурации исправить это для меня. После устранения проблемы «System.Web.Helpers» появились еще две похожие ошибки для «System.Web.Mvc» и «System.Web.WebPages».

<runtime>
    <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" 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-5.0.0.0" newVersion="5.2.3.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
1
Masoud Safi

Если у вас есть несколько проектов в вашем решении, и один из ваших проектов не может быть собран из-за этой ошибки, убедитесь, что вы установили пакет nuget WebApi Core в этот проект. Простое добавление ссылки на System.Web.Http не помогает, вам нужно установить правильный пакет nuget в этот проект.

У меня было несколько проектов в моем решении, и WebApi Core уже был установлен в другом проекте. Я сослался на сборку System.Web.Http, щелкнув правой кнопкой мыши и отметив сборку в списке, и она не работает в Azure, хотя локально она будет работать нормально. Мне пришлось удалить ссылку на руководство и добавить пакет nuget для WebApi Core в каждый проект, для которого требовалась ссылка на сборку.

0
Ali

Я удалил следующую запись из web.config, и она сработала для меня.

<dependentAssembly>
                <assemblyIdentity name="System.Web.Http.WebHost" culture="neutral" publicKeyToken="31BF3856AD364E35" />
                <bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="5.2.6.0" />
            </dependentAssembly>
0
Ibrahim Mohammed

В случае, если «Копировать локальный» уже имеет значение «Истина», я иногда нахожу его работающим, если вы удаляете файлы, в которых он был опубликован, и публикуете снова.

Например, если вы используете IIS, удалите веб-сайты и содержимое каталога, в котором они опубликованы, и повторите публикацию.

В месте назначения могут быть более старые версии файлов, поэтому, чтобы убедиться, что вы не используете более старые версии, удалите все перед публикацией снова.

0
Prasanth Louis

Мне не хватало нескольких библиотек DLL. Даже если я в следующий раз вручную скопирую их в каталог, они исчезнут. Каждому из них уже было присвоено значение «Локальное копирование в VS ...». Для меня было решено установить для каждого значение «Локальное копирование», сохранить, построить, а затем настроить для каждого локальное копирование. На этот раз, когда я опубликовал все библиотеки DLL опубликованы правильно. Странный

0
Grayson