3

ReportViewerコントロールでバージョンの問題が発生しています。Visual Studio 2010を使用していますが、SQL 2005を使用しているため、2005レポートビューアーを使用する必要があると思います。そこで、2005 ReportViewer .dllを指すようにwebconfigファイルを設定すると、すべてが1回機能し、VSがWebを編集します。 .configは、2010バージョンのdllを指します。これが私が正しく思うものを設定する関連するウェブ設定ファイルのセクションです:

<httpHandlers>
  <add path="elmah.axd" verb="POST,GET,HEAD" type="Elmah.ErrorLogPageFactory, Elmah" />
  <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    validate="false" />
</httpHandlers>

<compilation>
  <assemblies>
    <add assembly="Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
    <add assembly="Microsoft.ReportViewer.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
  </assemblies>
  <buildProviders>
    <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </buildProviders>
</compilation>

<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
  <add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" 
       type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</handlers>

したがって、それを実行して数回動作した後、httpハンドラーのバージョンを10.0.0.0に自動的に変更します。どうすればこれを防ぐことができますか?

4

3 に答える 3

3

web.configに書き込まれる内容は、プロジェクトで使用する参照によって定義されます。

Visual Studio 2008プロジェクトには、次の参照があります。

  • Microsoft.ReportViewer.Common.dll(バージョン9.0.0.0)
  • Microsoft.ReportViewer.WebForms.dll(バージョン9.0.0.0)

だから私の設定では私は見る:

<system.web>
  ...
  <compilation>
    ...
    <buildProviders>
      <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />        
    </buildProviders>
  </compilation>
  ...
  <httpHandlers>
    <add verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/>
  </httpHandlers>

利用可能なプロジェクト参照を見ると、次の3つがあります。

  • バージョン8.0.0.0
  • バージョン9.0.0.0
  • バージョン10.0.0.0

これは、Visual Studio 2005、2008、および2010がインストールされているためだと思いますが、個々のレポートビューアの再配布可能ファイルをインストールすると、同じ選択肢が提供される可能性があります。

NB私はバージョン番号を最もよく推測しました。あなたがもっとよく知っているなら、私を訂正してください。

于 2012-06-07T12:38:15.713 に答える
1

それはあなたの質問に対する正確な答えではありませんが、おそらく解決策です。
古いバージョンのレポートビューアを使用する必要はありません。サーバーに依存しません。特に.rdlc(クライアントレポート)では、データのみを提供し、レポートはサーバーを認識しません。

于 2012-05-03T10:26:21.933 に答える
1

WinFormsアプリでSQLレポートにアクセスすることが可能です。ReportViewerコンポーネントバージョン=9.0.0.0でVS2010を使用して開発されました。

手順は次のとおりです。

SQL 2005レポートにアクセスするには、上記のように、レポートビューアコンポーネントのVersion=9.0.0.0を使用する必要があります。したがって、これは、レポートをレンダリングする.aspxページ、またはレポートが継承するマスターページで必要になります。

レジスタアセンブリ="Microsoft.ReportViewer.WebForms、Version = 9.0.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a" namespace = "Microsoft.Reporting.WebForms" tagprefix = "rsweb"

この

    <form id="foo" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <rsweb:ReportViewer ID="ReportViewer1" runat="server" ProcessingMode="Remote" Width="950px"
                    Height="600" BorderColor="Gainsboro" BorderStyle="Solid" BorderWidth="1px">
        <ServerReport ReportPath="/foo/foo/FooReport"
                ReportServerUrl="http://foo/ReportServerSQL2005" />
    </rsweb:ReportViewer>
…

VS2010以降のバージョンはデフォルトで新しいバージョンのReportViewerコンポーネントになるため、web.conig内の他のバージョンのReportViewerコンポーネントへの参照も変更する必要がある場合があります。

例えば

<add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />

への変更

<add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

ソリューション全体でVersion=8.0.0.0やVersion=10.0.0.0などを検索し、Version=とPublicKeyToken=の両方に変更を加えるだけです。

また、プロジェクトで.netタブからreportviewerコンポーネント9.0.0.0への参照が必要になり、他のバージョンへの参照を削除します。

VSでソースビューとデザインビューの両方を持つ.aspxページを使用すると、デザインビューに「コントロールの作成エラー–ReportViewer1」と表示されることに注意してください。私が読んだところによると、これはコンポーネントのバグですが、とにかくすべての主要なブラウザーで機能します。

また、コンポーネントをツールからデザインサーフェスにドラッグする場合は、おそらく9.0.0.0バージョンを追加し、それが使用するバージョンであることを確認する必要があります。

私は以前にこの質問にここで答えました:

http://forums.asp.net/p/1985629/5691326.aspx?VS2010+ReportViewer+with+SQL+2005

ただし、私のアプリケーションは.NET 3.5 MVC2アプリケーションですが、かなりの努力を払った後でも、SQL2005レポートをレンダリングするためにそれを取得することができました。

理想的には、2005 SQLレポートサービスを2008に更新する必要がありますが、元に戻すことはできないため、最初にコピー/バックアップを作成して、すべてが引き続き機能することを確認してください。これを達成すると、上記のすべてが不要になります。私たちにとって、これは単なる暫定的な解決策でした。

于 2014-07-03T14:17:59.510 に答える