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'

プロジェクトは、この更新プログラムで Report Viewer 9 から 10 に更新されました。Web Config のすべての参照と、プロジェクトの「参照」が更新されました。「Temporary ASP.NET Files」に入れられるバージョンが、何らかの理由で実際にはバージョン 9 であることに気付きました。

もう一度要約します。プロジェクトは私のローカルマシンで正常に動作します。また、壊れたデモ サイトと同じサーバーに展開されているステージ サイトでも動作します。

これをトラブルシューティングするために私ができることについて誰か考えがありますか? 私にとって有効な解決策があるリソースが見つからないようです。コンパイル batch = false を試し、アセンブリ バインディング リダイレクトを 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.
4

2 に答える 2

1

このエラーは、複数のアセンブリがあるように見えますが、アセンブリの明示的な GUID を指すことでその問題を修正し、1 つ不足しています。「log4net」アセンブリが存在することを確認できますか? 既存の稼働中の SSRS システムがある場合は、それを調べます。その構成が同じかどうか、およびアセンブリのそのファイルが存在するかどうかを確認してください。その場合は、いつでも非稼働環境へのコピーを試みることができます。多くの場合、アセンブリまたはクラス ライブラリは、ある分割払いによって別の分割払いによって変更または上書きされます。1 台のマシンで同様の製品の複数のバージョンを実行するのは難しい場合があります。

私は自宅で、2008 Enterprise、2008R2 Express、および 2012 Developer の開発ボックスで SQL Server を実行して実行しています。16進エラーと、ファイルが見つからない問題を指している問題がたくさんあります。簡単な答えは、同じマシンに同じ製品の複数のバージョンをインストールしないでください。一般に、重複に関する DLL の問題では、1 つを dllOLD などに再リストし、それが機能するかどうかを確認します。より適切な方法を実行し、明示的にリストしている場合、それはあなたです。DLLが実際に存在し、RDPを介して別の環境にリモート接続できることを確認し、同時にその画面を表示します。できれば、2 つのモニターを使用して、一方の環境を他方の環境と比較して確認してください ;)

于 2013-04-12T17:35:54.453 に答える
0

私はそれを考え出した。デモ サイトの Bin ディレクトリに古い DLL がぶら下がっていたことが判明しました。もう使用されていないため、新しいバージョンで上書きされることはなかったので、そこに座ってプロジェクトをいじっていました。デモ サイトの bin ディレクトリを一掃してから再デプロイしたところ、問題なく動作しました。助けてくれてありがとう。

于 2013-04-12T17:48:30.530 に答える