2013-04-12 1 views
1

프로덕션 사이트에서 보고서 뷰어에 이상한 문제가 있습니다. 사이트의 무대와 데모 버전을 동일한 컴퓨터에 배포했습니다. 최근에 나는 업데이트 작업을하고 있으며 제대로 작동하는 무대 버전으로 배포하고 있습니다. 오늘 데모에 배포하고 데모에서만 갑자기 보고서 뷰어가 손상되었습니다.프로덕션 사이트에서 보고서 뷰어 어셈블리 관련 문제

내가 갖는 오류 :

CS0433: The type 'Microsoft.Reporting.WebForms.ReportDataSource' exists in both 
'c:\Windows\assembly\GAC_MSIL\Microsoft.ReportViewer.WebForms\10.0.0.0__b03f5f7f11d50a3a\Microsoft.ReportViewer.WebForms.dll' 
and 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\h2o-demo\d354e6e4\ac3ce3e\assembly\dl3\67b85cd6\0027fec0_ed32ca01\Microsoft.ReportViewer.WebForms.DLL' 

프로젝트는이 업데이트에서 10 보고서 뷰어 (9)에서 업데이트되었습니다. Web Config의 모든 참조는 프로젝트의 "참조"뿐만 아니라 업데이트되었습니다. "Temporary ASP.NET Files"에 삽입되는 버전이 실제로 어떤 이유로 든 버전 9임을 알았습니다.

다시 요약하면; 프로젝트는 내 로컬 컴퓨터에서 제대로 작동합니다. 또한 손상된 데모 사이트와 동일한 서버에 배포 된 Stage 사이트에서도 작동합니다.

아무도 내가 이것을 해결하기 위해 할 수있는 것에 대해 아이디어가 있습니까? 나에게 도움이되는 해결책이있는 리소스를 찾을 수없는 것 같습니다. 나는 compilation batch = false를 시도하고 assemblyredirect를 9에서 10까지 추가했다. (내가 잘못했을 수도 있음). 나는 왜 그것이 한 사이트에서 작동 할 것이지만 다른 사이트에서는 작동하지 않는지에 대해 정말로 혼란스러워합니다.

EDIT 1 : 좀 더 주위를 둘러 본 후 바인딩 리디렉션을 다시 시도했습니다. 이제 내 설정 파일은 다음과 같습니다.

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
     <assemblyIdentity name="log4net" publicKeyToken="1b44e1d426115821" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-1.2.10.0" newVersion="1.2.10.0" /> 
    </dependentAssembly> 
    <dependentAssembly> 
     <assemblyIdentity name="Microsoft.ReportViewer.WebForms" publicKeyToken="b03f5f7f11d50a3a" /> 
     <bindingRedirect oldVersion="9.0.0.0" newVersion="10.0.0.0"/> 
    </dependentAssembly> 
    <dependentAssembly> 
     <assemblyIdentity name="Microsoft.ReportViewer.Common" publicKeyToken="b03f5f7f11d50a3a" /> 
     <bindingRedirect oldVersion="9.0.0.0" newVersion="10.0.0.0"/> 
    </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

"Log4Net"리디렉션이 이미 있으며 무대에 유일한 것입니다. "WebForms"를 추가 한 후에 "Common"에 오류가있어서 그 코드도 추가했습니다. 지금은이 오류를 받고 있어요 :

Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821' or one of its dependencies. The system cannot find the file specified. 
+0

BindingRedirect가 도움이 될 수 있습니다. 어떻게했는지에 대한 코드를 보여줄 수 있습니까? – Jeroen

+0

죄송합니다.나는 당신의 편집을 지 웁니다. 나는 그 중 대부분을 다시 넣었습니다. :) – William

+0

제 답변을 [제발 파일이나 어셈블리를로드 할 수 없습니다. 'Microsoft.ReportViewer.Common, Version ...] (http://stackoverflow.com/questions/22253607/could-not-load-file-or-assembly-microsoft-reportviewer-common-version-11-0-0-0/33670464#33670464)? –

답변

0

알아 냈습니다. 데모 사이트의 Bin 디렉토리에 오래된 DLL이 있습니다. 그것은 더 이상 사용하지 않기 때문에 새 버전으로 덮어 쓰지 않고 있었기 때문에 어떻게 든 프로젝트를 망쳐 놓고 앉아있었습니다. 데모 사이트의 bin 디렉터리를 지운 다음 다시 배포 했으므로 제대로 작동했습니다. 도움을 주셔서 감사합니다.

1

이 오류는 여러 어셈블리를 가지고있는 것처럼, 다음 어셈블리의 명시 적 GUID는 이제 하나의 누락으로 지정하여이 문제를 해결 보인다. 'log4net'어셈블리가 있는지 확인할 수 있습니까? SSRS 시스템이있는 경우 기존 SSRS 시스템을 살펴 보겠습니다. 해당 구성이 동일하고 어셈블리에 대한 해당 파일이 있는지 확인하십시오. 그럴 경우 항상 비 작업 환경에 대한 사본을 시도 할 수 있습니다. 많은 경우 어셈블리 또는 클래스 라이브러리가 하나의 설치에 의해 변경되거나 덮어 쓰기됩니다. 한 대의 컴퓨터에서 여러 버전의 유사한 제품을 실행하는 것은 때로는 어렵습니다.

2008 Enterprise, 2008R2 및 2012 Developer의 DevBox에서 실행되는 SQL Server로 집에서합니다. 16 진수 오류 및 파일을 찾을 수없는 문제를 지적하는 문제가 많이 발생합니다. 당신이 그것을 도울 수있는 경우 동일한 제품의 동일한 버전의 여러 버전을 설치하지 않는 간단한 대답이지만, 나는 그것이 싸구려 또는 당신이 가진 것에 대한 테스트에 항상 적용 가능하지 않다는 것을 알고 있습니다. 일반적으로 DLL에 문제가있는 경우에는 dllOLD 또는 유사한 것으로 relist 한 다음 작동하는지 확인하십시오. 당신이 더 적절한 방법과 명부 작성을하고 있다면, 당신은 누구인가. DLL이 실제로 존재하는지 확인하고 RDP를 통해 다른 환경에 원격으로 연결할 수 있으며 동시에 해당 화면을 표시 할 수 있습니다. 바라건대 당신은 다른 모니터와 비교하여 하나의 환경을 볼 수있는 두 대의 모니터가 있습니다.)