ASP.NET 4.0とVisual Studio 2010を使用して構築されたWebアプリケーションからCrystalレポートを実行しようとしています。SAPサイト( http://www.businessobjects.com/jump)から以下をインストールしました/xi/crvs2010/us2_default.asp )
1)SAP Crystal Reports、Visual Studio 2010バージョン-Visual Studio IDEにソフトウェアをインストールする標準EXEインストールパッケージ。
2).NET Framework 4(64ビット)用のSAP Crystal Reportsランタイムエンジン
Crystal.Report Viewerコントロールを含むReports.aspxというページがあります。
<CR:CrystalReportViewer ID="rptViewer" runat="server" AutoDataBind="true" />
Reports.aspx.csファイルには、次のコードがあります。
protected override void OnPreRender(EventArgs e)
{
ReportDocument report = new ReportDocument();
var path = Server.MapPath("Reports/Sample.rpt");
report.Load(path);
report.SetDatabaseLogon("username", "password", "servername", "databasename");
rptViewer.ReportSource = report;
}
Report.Load(path)行で、次のエラーが発生します。
サポートされていない操作です。 JRCエンジンで処理されたドキュメントをC++スタックで開くことができません。
どうすれば修正できますか?
レポートがapp_code
フォルダは、レポートドキュメントを初期化してレポートをロードする代わりに、その新しいインスタンスを初期化します。
Sample report = new Sample();
これは私のために働いた
同じ問題が発生しましたが、問題はレポートパスが無効でした。同じ問題が発生している可能性があります。Server.MapPath( "Reports/Sample.rpt")が有効なパスを返すことを確認してください。
.rptファイルの2つのプロパティを変更する必要があります。
再構築、展開パッケージの構築、公開。できた!
注:以下では、「WebSite」という用語は、Webサイト内の仮想ディレクトリではなく、IISの実際のWebサイトノードを指します。
問題の根本原因:アプリケーションからアクセス可能な「aspnet_client」フォルダがありません。
これはいくつかの理由で発生する可能性があります:
問題の解決策(Windows Server 2008 R2の場合)
WebサイトをWebアプリケーションに変換したときに、これに遭遇しました。レポートは私の開発マシンでは正常に実行されますが、サーバーでは実行されません。次に、RPTファイルがmissingであることをサーバーで認識しました!
デフォルトでは、レポートファイルは埋め込みリソースと見なされ、Webアプリケーションの公開時にコピーされませんでした。私はそれらを個別に変更し、サイトを再公開しましたが、すべて順調でした。
このエラーは実際の扱いであり、多くの可能性のある前例があるようです。幸いなことに、私は特定のバリエーションで1日を無駄にしただけです。
ReportDocument.Load()
は、ローカル一時コピーも作成します。 (これは、ネットワークドライブの場所からの負荷の場合にのみ発生する可能性があります。ローカル負荷の場合には、これをテストしていません。)
ロードが発生するユーザーコンテキストに一時ファイルをローカルで作成する権限がない場合、Load
は失敗し、非常に役に立たない同じエラーが発生します。
また、これを Process Monitor で診断してしまいました。それはあなたにも役立つかもしれません。
また、Crystal Reports Designerでレポートファイルを誤って開いたままにしておくと、レポートの読み込みに失敗しました。
レポートのrptファイルが元のフォルダーにあることを確認してください。 MVC WebサイトをIISに "公開"した後、最初に同じエラーが発生しました。 「パブリッシュ」がパッケージにrptファイルを入れないことに気づきませんでした。
「Crystalレポートエンジン」をサーバーに再インストールします
「コンテンツ」に設定されたビルドアクション。
それは完全に私のために働きました。