2013-04-12 26 views
1

我的生產站點上有報表查看器出現奇怪的問題。我在同一臺機器上部署了網站的演示版和演示版。最近我一直在進行更新,並且已經部署到可以正常工作的舞臺版本。今天,我部署到了Demo,並且突然間,報告查看器被破壞,僅在Demo上。製作網站上的報表查看器組件的問題

我得到的錯誤是:

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' 

該項目從報表查看器9在本次更新升級到10。 Web配置中的所有參考都已更新,並在我的項目的「參考」中進行了更新。我注意到,出於某種原因,放入「Temporary ASP.NET Files」的版本實際上是版本9。

再次回顧一下;該項目在我的本地機器上正常工作。它也適用於與破損的Demo站點位於同一臺服務器上的Stage站點。

有沒有人有什麼想法,我可以做什麼來解決這個問題?我似乎無法找到有解決方案爲我工作的任何資源。我試着編譯batch = false,並添加一個從9到10的程序集bindingredirect(儘管我想我可以做到這一點不正確)。我只是很困惑,爲什麼它會在一個網站上運行,而不是在另一個網站上運行。

編輯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,版本...]( http://stackoverflow.com/questions/22253607/could-not-load-file-or-assembly-microsoft-reportviewer-common-version-11-0-0-0/33670464#33670464)? –

回答

0

我想通了。原來演示網站上的Bin目錄中有一箇舊的DLL被掛在外面。它沒有被新版本覆蓋,因爲它不再被使用,所以它只是坐在那裏搞亂了項目。我清理了Demo站點上的bin目錄,然後重新部署並且工作正常。謝謝你們的幫助。

1

此錯誤看起來你有多個組件,然後指着組裝明確的GUID現在你缺少一個修正了這個問題。你能否驗證'log4net'程序集是否存在?如果有的話,我會查看一個現有的工作SSRS系統。查看該配置是否相同,以及該配件的文件是否存在。如果是這樣,你總是可以嘗試將它複製到非工作環境中。在許多情況下,程序集或類庫不是被更改就是被另一個分區覆蓋。在一臺機器上運行多個版本的類似產品有時很難。

我在家裏用SQL Server運行在2008 Enterprise,2008R2 express和2012 Developer的Dev框上。我收到很多有關十六進制錯誤的問題,並指出無法找到文件的問題。簡單的答案是不要在同一臺機器上安裝同一產品的多個版本,如果你可以幫助它,但我知道這並不總是適用於便宜或你有什麼測試。通常在重複DLL問題時,我會將其中一個重命名爲dllOLD或類似文件,然後查看它是否可以正常工作。如果你正在做更明確的方法和明確列出,你是。我只是確保DLL真的存在,並且可以通過RDP遠程訪問另一個環境,並同時進行屏幕顯示。希望你有兩臺顯示器可以看到一個環境相比較);