Visual Studio 2013 に CrystalReportViewer を含んだASP.NETのプロジェクトの移行を確認していたのですが、実行させるとタイトルのようなエラーが出て上手く動きません。
ところが、本番環境にインストール(発行)してみると上手く動きます。
どうも、Visual Studio 2013になってから、ローカル環境でのデバッグ用 Web サーバー
「Visual Studio 開発サーバー 」 が廃止され、IIS Express が標準となったのが影響していて、想像するにCrystalReportViewerを上手く参照できなくなっているようです。
ちなみに、CrystalReportViewer を含まないASP.NETのプロジェクトは IIS Express でも上手く動きます。
いろいろと調べてみると、以下のサイトにたどり着きました。
http://www.mahadera.com/error-0x800a1391-javascript-runtime-error-bobj-is-undefined/
これを、参考に、解決したのが、以下の手順です。
(1) まず、SAPのサイトから、各自の環境に合わせたRuntimeをダウンロードしてインストールします。特に制約などなければ、最新のものでいいでしょう。
(2)次の場所
C:\inetpub\wwwroot\aspnet_client\system_web\4_0_30319
に、
フォルダ crystalreportviewers13
があることを確認。
(3)プロジェクトの web.config のファイルの一番上の
<configuration>
の次に以下を追加。
<configSections>
<sectionGroup name="businessObjects">
<sectionGroup name="crystalReports">
<section name="rptBuildProvider" type="CrystalDecisions.Shared.RptBuildProviderHandler, CrystalDecisions.Shared, Version=13.0.2000.0, Culture=neutral,PublicKeyToken=692fbea5521e1304, Custom=null" />
<section name="crystalReportViewer" type="System.Configuration.NameValueSectionHandler" />
</sectionGroup>
</sectionGroup>
</configSections>
<businessObjects>
<crystalReports>
<rptBuildProvider>
<add embedRptInResource="true" />
</rptBuildProvider>
<crystalReportViewer>
<add key="ResourceUri" value="/crystalreportviewers13" />
</crystalReportViewer>
</crystalReports>
</businessObjects>
(4)プロジェクトのワーキングディレクトリに、 (2)で確認した場所から
フォルダ crystalreportviewers13
をコピーする。
※ワーキングディレクトリとは sln 属性のファイルとか、obj とか bin のフォルダが有る場所です。
私の場合は、上記の対策で上手く IIS Express でも表示されるようになりました。
一つ注意点は、本番環境にインストール(発行)するときは、(3)で変更した
web.config
を本番環境にインストール(発行)してはいけません。このweb.configだと今度は逆に、CrystalReportViewerが参照できなくなるようでうまく表示できません。
最後に、環境を書いておきます。
OS Windows 8.1 Update (64bit)
IDE Visual Studio 2013
SAP Crystal Reports Runtime (v. 13.0.10.1385)
環境によっては、フォルダ名、位置などは違っているかも知れません。適宜読み替えてください。
コメント
コメントを投稿