Vs2010で.net4.0を使用してクリスタルレポートを作成しました。 Webサイトを公開すると、「JRCエンジンで処理されたドキュメントをC++スタックで開けません」というエラーがスローされます。 Webサイトをサーバーに公開し、クライアントからアクセスしようとしています。app_codeの.rptファイルを確認しましたが、同じエラーが再び発生しました。そこで、wwwrootフォルダーを作成し、そのフォルダーにasp_clientとwebサイトフォルダーを保持し、wwwrootへの物理パスを指定しました。クリスタルレポートを除くすべてが正常に動作しています。 .csファイルのコードは次のとおりです。
ReportDocument rptDoc = new ReportDocument();
DataSetForCrystalReport ds = new DataSetForCrystalReport();
DataSetForCrystalReport dsHeader = new DataSetForCrystalReport();
DataTable dt = new DataTable();
DataTable dtHeader = new DataTable();
dt.TableName = "dtBill";
string ReceiptNo = Request.QueryString["ReceiptNo"];
dt = getAllOrders(ReceiptNo).Tables[0];
dtHeader = TblcompanysettingsService.GetOrganizationDetails();
ds.Tables[1].Merge(dt);
ds.Tables[2].Merge(dtHeader);
rptDoc.Load(Server.MapPath("crBill.rpt"));
rptDoc.SetDataSource(ds);
CrystalReportViewer1.ReportSource = rptDoc;
エラーのスタックトレース:
[COMException (0x80041811): Unsupported Operation. A document processed by the JRC engine cannot be opened in the C++ stack.]
CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options) +0
CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options) +147
CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +422
[CrystalReportsException: Load report failed.]
CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +549
CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob) +1613
CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename) +189
GenerateBill.Page_Load(Object sender, EventArgs e) in e:\ShareFolder\Movie\wwwroot\Website\GenerateBill.aspx.cs:33
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25
System.Web.UI.Control.LoadRecursive() +71
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3064
.rptファイルへのパスを確認してください!エラーの説明は、実際の理由とは関係ありません。 .rptファイルが見つかりません!
私の場合、パスはReportsサブフォルダーにある.rptファイルのパスでなければなりませんでした。
Server.MapPath("~/Reports/InvoiceRegular.rpt");
私のために働いた。
私のためのこの仕事
かわった
a。 「コンテンツ」としてのアクションの構築
b。 「コピーしない」として出力ディレクトリにコピーします
c。カスタムツールおよびカスタムツールネームスペースの場合は空にします
これが他の誰かに役立つかどうかはわかりませんが、この問題を抱えていました。 .rptファイルのファイル名を誤って入力しました...ファイル名に2つの単語の間にスペースがありました(通常、この理由だけでこれは行いません)が、コードに名前を含めると、スペースが残りましたでる。ファイル名を修正し、問題はなくなりました。
これらの手順を実行するだけ
(1)「.rpt」ファイルを右クリックして、「Properties」を選択します
1.a)「Content」としてアクションをビルド
1.b)「常にコピー」として出力ディレクトリにコピー
(2).rptファイルへのパスを確認しますServer.MapPath( "Your path");
例:Server.MapPath("~/Reports/MyReport.rpt");
注:レポートビューアーのrptとaspxページの両方が同じフォルダーにある場合は、絶対パスを指定する必要はなく、Server.MapPathでfilename.rptのみを指定できます。
ソリューションを見つけたのは、最初に独自のクリスタルレポートでVisual Studio 2005を使用してから、SAPからダウンロードした別のクリスタルレポートでVS2010にアップグレードしたときでした。私はSAPから調査して見つけました。
Crystal Reportsの各バージョンには固有のランタイムがあり、正しくデプロイする必要があるため、デプロイされたランタイムがプロジェクトで参照されるVisual Studio .NETのCrystal Reportsアセンブリと一致することが重要です。
だから私は以前のバージョンをアンインストールし、1つのバージョンのみを使用し、それが機能しました。 :) ta.speot.isに感謝します。これはコーディングの問題ではありませんでした。
フォルダー(aspnet_client)を(C:\ inetpub\wwwroot)からWebサイトフォルダーにコピーして貼り付け、.rptファイルが同じフォルダーにあることを確認します。
前述の@seropのように、ファイルパスが正しいことを確認してください。また、レポートフォルダーが公開されない場所にも気付きました。そのため、レポートフォルダーを手動で公開する必要がありました。
このかなり役に立たないエラーが表示される状況の別のセットを見つけました。
Visual StudioでWebアプリケーションを実行/デバッグするためにF5キーを押しても、Crystal Reports(2011)でレポートが開いたままの場合、エラーが発生します。
今日は1時間ほどおかしくなりました!
.rptファイル(crystlレポートテンプレート)をローカルマシンから特定のサーバー/マシンのフォルダーにコピーするだけで、CrystalDecisions.Shared.CrystalReportsException:レポートのロードに失敗する問題を解決できると確信しています。
私にとってはうまく機能し、サーバー側でエラーは発生しませんでした。私のアプリケーションは、コードに従ってパスを共有するためにpdfファイルを保存することができます。
作業:ローカルマシンから.rptファイルをコピーすると、ホスト上の.rptファイルが上書きされ、正常に動作します。
これはちょうど私に起こりました、そして、数時間の頭痛の後、私はそれがファイル許可問題であるとわかりました。何らかの理由で、CR devサーバーから共有のカスタム.rptディレクトリにコピーするとき、ファイルのアクセス許可はすべてジャッキアップされ、いくつかのユーザーグループのアクセス許可をファイルに追加し直す必要がありました。
。rptファイルが存在するかどうかを確認してください。そうでない場合は、ローカルからホスティングフォルダーにコピーしてください。作業が開始されます。