[C#] 2012 년에서 2013 년으로 업데이트 한 후 파일 또는 어셈블리 ‘System.Web.Http 4.0.0을로드 할 수 없습니다.

에 따라 업그레이드를 수행했습니다.
http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and- 웹 API-2

오류가 발생합니다. 다른 사람 이이 오류가 발생합니까?

‘/’응용 프로그램에 서버 오류가 있습니다.

파일 또는 어셈블리 ‘System.Web.Http, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35’또는 해당 종속성 중 하나를로드 할 수 없습니다. 찾은 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다. (HRESULT 예외 : 0x80131040)
설명 : 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 발생한 위치에 대한 자세한 정보는 스택 추적을 검토하십시오.

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

소스 오류 :

48 행 : 49 행 : 50 행 :} 51 행 : 52 행 : protected void Application_BeginRequest (객체 발신자, EventArgs e)

소스 파일 : d : \ SM \ 7.4Test \ WebAPIServerV2 \ ThirdPartyWebAPI \ Global.asax.cs 줄 : 50

어셈블리로드 추적 : 다음 정보는 ‘System.Web.Http, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35’어셈블리를로드 할 수없는 이유를 확인하는 데 도움이 될 수 있습니다.

=== 사전 바인딩 상태 정보 === 로그 : DisplayName = System.Web.Http, 버전 = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 (완전히 지정됨) LOG : Appbase = file : /// D : /SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/ LOG : 초기 PrivatePath = D : \ SM \ 7.4Test \ WebAPIServerV2 \ ThirdPartyWebAPI \ bin 호출 어셈블리 : ThirdPartyWebAPI, 버전 = 1.0.0.0, Culture = neutral, PublicKeyToken = null. === LOG :이 바인드는 기본로드 컨텍스트에서 시작합니다. 로그 : 응용 프로그램 구성 파일 사용 : D : \ SM \ 7.4Test \ WebAPIServerV2 \ ThirdPartyWebAPI \ web.config 로그 : 호스트 구성 파일 사용 : C : \ Users \ michalc \ Documents \ IISExpress \ config \ aspnet.config 로그 : 컴퓨터 구성 사용 C : \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ config \ machine.config의 파일입니다. LOG : 정책 후 참조 : System.Web.Http, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 LOG : 새 URL 파일 다운로드 시도 중 : ///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files / root / 9184b2ea / c6d4b139 / System.Web.Http.DLL. LOG : 새 URL 파일 다운로드 시도 : ///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files / root / 9184b2ea / c6d4b139 / System.Web.Http / System.Web.Http .DLL. LOG : 새 URL 파일 다운로드 시도 : ///D:/SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/bin/System.Web.Http.DLL. WRN : 어셈블리 이름을 비교하면 불일치가 발생했습니다. 주 버전 ERR : 어셈블리 설정을 완료하지 못했습니다 (hr = 0x80131040). 프로빙이 종료되었습니다. 새 URL 파일 다운로드 시도 : ///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files / root / 9184b2ea / c6d4b139 / System.Web.Http / System.Web.Http.DLL . LOG : 새 URL 파일 다운로드 시도 : ///D:/SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/bin/System.Web.Http.DLL. WRN : 어셈블리 이름을 비교하면 불일치가 발생했습니다. 주 버전 ERR : 어셈블리 설정을 완료하지 못했습니다 (hr = 0x80131040). 프로빙이 종료되었습니다. 새 URL 파일 다운로드 시도 : ///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files / root / 9184b2ea / c6d4b139 / System.Web.Http / System.Web.Http.DLL . LOG : 새 URL 파일 다운로드 시도 : ///D:/SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/bin/System.Web.Http.DLL. WRN : 어셈블리 이름을 비교하면 불일치가 발생했습니다. 주 버전 ERR : 어셈블리 설정을 완료하지 못했습니다 (hr = 0x80131040). 프로빙이 종료되었습니다. 어셈블리 설정을 완료하지 못했습니다 (hr = 0x80131040). 프로빙이 종료되었습니다. 어셈블리 설정을 완료하지 못했습니다 (hr = 0x80131040). 프로빙이 종료되었습니다.

스택 추적 :

[FileLoadException : 파일 또는 어셈블리 ‘System.Web.Http, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35’또는 해당 종속성 중 하나를로드 할 수 없습니다. 찾은 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다. (HRESULT 예외 : 0x80131040)] d : \ SM \ 7.4Test \ WebAPIServerV2 \ ThirdPartyWebAPI \ Global.asax.cs : 50의 ThirdPartyWebAPI.WebApiApplication.Application_Start ()

[HttpException (0x80004005) : 파일 또는 어셈블리 ‘System.Web.Http, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35’또는 해당 종속성 중 하나를로드 할 수 없습니다. 찾은 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다. (HRESULT 예외 : 0x80131040)]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode (HttpContext context, HttpApplication app) +9935033
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS (IntPtr appContext, HttpContext context, MethodInfo [] 처리기) +118
System.Web.HttpApplication .InitSpecial (HttpApplicationState 상태, MethodInfo [] 핸들러, IntPtr appContext, HttpContext 컨텍스트) +172
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance (IntPtr appContext, HttpContext context) +336
System.Web.Hosting.PipelineRuntime.InitializeApplication (IntPtr appContext) +296

[HttpException (0x80004005) : 파일 또는 어셈블리 ‘System.Web.Http, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35’또는 해당 종속성 중 하나를로드 할 수 없습니다. 찾은 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다. (HRESULT 예외 : 0x80131040)]
System.Web.HttpRuntime.FirstRequestInit (HttpContext context) +9913572 System.Web.HttpRuntime.EnsureFirstRequestInit (HttpContext context) +101 System.Web.HttpRuntime.ProcessRequestNotificationPrivate (IIS7WorkerRequest wr, HttpContext 컨텍스트) +254


버전 정보 : Microsoft .NET Framework 버전 : 4.0.30319; ASP.NET 버전 : 4.0.30319.18408



답변

깨진 종속성을 수정 하는 NuGet 패키지다시 설치 하여이 문제를 해결했습니다 . 패키지 관리자에서 다음을 실행하십시오.

Update-Package Microsoft.AspNet.WebApi -reinstall


답변

파일 또는 어셈블리 ‘System.Web.Http’를로드 할 수 없습니다 오류를 해결하려면 NuGet을 사용하여 Web API 2.1 WebHost를 설치하십시오.

참조의 솔루션 탐색기에서 마우스 오른쪽 단추를 클릭하고 너겟 패키지 관리를 선택하십시오. (nuget을 설치하지 않은 경우)

여기에 이미지 설명을 입력하십시오

왼쪽의 NuGet 패키지 관리 창에서 온라인을 클릭 한 다음 오른쪽 상단에서 웹 호스트를 검색하고 Microsoft ASP.NET Web API 2.1 웹 호스트를 설치하십시오. (설치가 완료되면 설치 버튼이 녹색 확인으로 바뀝니다)

그 후 프로젝트가 다시로드되고 다시 빌드되면 오류가 해결되고 프로젝트가 디버그되고 실행됩니다. 오류가 사라지고 ‘자원을 찾을 수 없습니다. URL을 추가하십시오 (예 : localhost : 52088 /에서 localhost : 52088api / products)

당신의 질문은 좋았고 저를 도왔습니다.

이 답변이 도움이 되길 바랍니다!


답변

어셈블리 리디렉션을 추가해야합니다.

<configuration>

   ....

   <runtime>
      <assemblyBinding>
    <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="5.0.0.0" />
      </dependentAssembly>
      </assemblyBinding>
   </runtime>

   ...

</configuration>

웹 호스팅 등과 같은 몇 가지 어셈블리에 대해이 작업을 수행해야합니다.


답변

또는 NuGet Package Manager Console에서이를 수행 할 수 있습니다.

 Install-Package Microsoft.AspNet.WebApi -Version 5.0.0

그런 다음 System.Web.Http.WebHost 5.0에 대한 참조를 추가 할 수 있습니다.


답변

Web Api 2.2 도움말을 설치하면이 오류가 시작되었습니다. 나는 이것을 web.config에 추가하고 내 문제를 해결했다.

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


답변

나는 단순히 Copy Local = true누락 된 어셈블리 를 설정 했고 효과가있었습니다. 물론 누락 된 참조 (오류 메시지에 표시됨)를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하면됩니다. 아래:

여기에 이미지 설명을 입력하십시오

그러면 문제를 일으키는 어셈블리가 두 개 이상있을 수 있으므로 하나의 문제를 해결해야합니다. 내가 한 것은 모든 어셈블리를 선택하고 마우스 오른쪽 단추를 클릭하는 것입니다. 선택된 속성들; 그리고 모두 복사 로컬 = true로 설정하십시오. 그런 다음 다시 게시하십시오.


답변

이 문제를 해결하는 올바른 해결책은 다음 단계를 따르는 것입니다.

. 이전 버전이 15.5.4 인 경우 Visual Studio를 업데이트합니다 (선택 사항)

  1. web.config에서 모든 바인딩 리디렉션을 제거하십시오.

  2. 이것을 csproj 파일에 추가하십시오 :

 <PropertyGroup>
  <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
  1. 짓다.

  2. bin 폴더에는 (WebAppName).dll.config파일 이 있어야 합니다.

  3. 리디렉션이 있어야합니다. 이것을 web.config에 복사하십시오.

  4. csproj 파일에서 위의 내용을 다시 제거하십시오.

  5. 작동해야합니다

Detailed Blog