13

방금 ​​Asp.Net Web Api 2.2 프로젝트를 프로덕션 서버에 업로드했는데 제목에 오류가 있습니다.파일 또는 어셈블리를로드 할 수 없습니다. System.Web.Http, 버전 = 5.2.2.0

<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> 

파일이 bin에 존재 : 내의 Web.config에서

나는 이미이 있습니다. 이게 뭐야?
내 모든 Asp.Net 웹 API 파일이 최신이며 버전으로 5.2.2를 표시합니다. 그것은 내 dev에 기계에서 잘 작동합니다.

답변

12

System.Web.HttpSystem.Web.Http.WebHost 어셈블리의 속성에 Copy Local ~ true을 설정하고 패키지를 다시 배포하십시오.

그래도 문제가 해결되지 않으면 NuGet 패키지를 다시 설치하십시오. 이렇게하면 깨진 종속성을 수정할 수 있습니다. 패키지 관리 콘솔에서 다음 명령을 실행하십시오.

Update-Package Microsoft.AspNet.WebApi -reinstall 

System.Web.Http.WebHost도 설치해야합니다. 내가 5.2.3.0이었다 "System.Web.Http"의 버전을 확인 "솔루션 탐색기"에서

나를 위해
+1

다시 설치하면 문제가 해결됩니다. –

+0

나를 위해 작동하지 않았다 –

0

다른 버전의 GAC에 어셈블리가있는 경우에는 bin 폴더의 어셈블리가 아닌 항상로드됩니다.

+0

이것은 단순히 사실입니다. 그가 게시 한 dependentAssembly 구성이 그 것을 확인합니다. –

+0

그건 사실이 아닙니다. GAC에 어셈블리가 있고 파일 시스템에 같은 이름과 공개 키가있는 경우에는 바이트를로드해도되지만 GAC에서 항상로드합니다. 시도 해봐. –

3

, 그래서 나는 변경 :

<bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" /> 

<bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.3.0" /> 

에 다음 구축 . 그것은 나를 위해 일했다! 당신은 문제가있는 DLL의

다음을 수행하십시오 :

+1

이것은 나를 위해 일했다! – Roboblob

-3

Nuget으로 다시 설치/새 빌드 또는 업데이트를 필요로하지 않는이 작업을 수행하는 또 다른 방법은 config.web에서 다음을 수행하는 것입니다

&lt;bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="5.2.2.0"&gt; 

는 오늘 문제가 있고,이 작은 비틀기 내가 똑같은 오류로 실행

0

... 그것을 해결. 이전 버전의 Web.config를 대체 한 응용 프로그램을 배포하는 데 사용했던 스크립트 때문에 발생했습니다. Web.config가 잘못된 버전의 System.Web.Http를 지정했습니다. 이 단계를 제거하면 문제가 해결됩니다.