[asp.net] Azure 웹 사이트에 게시 한 후 파일 또는 어셈블리 System.Web.Http.WebHost를로드 할 수 없습니다.

웹 프로젝트를 만들었고 Visual Studio에서 잘 실행됩니다. 그러나 azurewebsites에 게시 한 후 다음 오류가 발생했습니다. 무엇이 문제를 일으킬 수 있습니까?

파일 또는 어셈블리 ‘System.Web.Http.WebHost, Version = 5.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35’또는 해당 종속성 중 하나를로드 할 수 없습니다. 찾은 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다. (HRESULT 예외 : 0x80131040)

설명 : 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 발생한 위치에 대한 자세한 정보는 스택 추적을 검토하십시오.

예외 정보 : System.IO.FileLoadException : 파일 또는 어셈블리 ‘System.Web.Http.WebHost, Version = 5.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35’또는 해당 종속성 중 하나를로드 할 수 없습니다. 찾은 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다. (HRESULT 예외 : 0x80131040)

소스 오류 :

현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 생성되었습니다. 예외의 출처와 위치에 관한 정보는 아래 예외 스택 추적을 사용하여 식별 할 수 있습니다.

어셈블리로드 추적 : 다음 정보는 ‘System.Web.Http.WebHost, Version = 5.0.0.0, Culture = neutral, 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>



답변

dll게시 (배치 환경)에 없습니다. 이것이 로컬 웹 사이트에서는 작동하지만 Azure 웹 사이트 환경에서는 작동하지 않는 이유입니다.

그냥 할 Copy Local = true어셈블리 (의 속성에 System.Web.Http.WebHost ) 다음 재배포을, 그것을 잘 작동합니다.

비슷한 오류가 발생하는 경우 (예 : 다른 어셈블리가 누락 된 경우) 해당 어셈블리를 copylocal = true로 설정하고 재배치하는 경우 종속성이 확실하지 않은 경우이 과정을 반복적으로 반복하십시오.


답변

여전히 답을 찾고 있다면이 질문 스레드를 확인하십시오 . 비슷한 문제를 해결하는 데 도움이되었습니다.

편집 : Update-Package Microsoft.AspNet.WebApi -reinstallPathoschild가 제안한 것처럼 NugGet 패키지 관리자에서 실행하는 데 도움이되는 솔루션 이었습니다. 그런 다음 Sergey Osypchuk 제안한대로 내 .suo 파일을 삭제하고 VS를 다시 시작해야했습니다 .


답변

나는 같은 문제를 만났고 CopyLocal다음 라이브러리에 대해 true 로 설정 하여 해결했습니다 .

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

MVC4 및 NET 4를 사용하도록 추가해야합니다.


답변

나를 위해 다음 섹션을 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을 나타냅니다. 누군가가 그러한 문제를 해결하는 데 도움이되기를 바랍니다.


답변

나를 위해 게시 대화 상자의 설정에서 파일 게시 옵션에서 “대상에서 추가 파일 제거”를 선택한 후 작업을 시작했습니다.


답변

게시 된 (배포 된 환경)에 dll이 없습니다. 이것이 로컬 웹 사이트에서는 작동하지만 Azure 웹 사이트 환경에서는 작동하지 않는 이유입니다.

어셈블리 (System.Web.Http.WebHost)의 속성에서 Local = true 복사를 한 다음 재배치하면 제대로 작동합니다.


답변

vs2012를 사용하고 있으며 업데이트 KB2781514가 일부 설정을 변경했다고 생각합니다. 내 MVC4 프로젝트의 모든 System.Web.Http가 false로 변경되어 계속이 메시지를 받았습니다. All file in this project게시 속성을 변경 했지만 작동하지 않습니다. 마지막으로 Copy Local = true하나씩 변경 하고이 문제를 해결해야합니다.