35

vs2010 で .net4.0 で Crystal Report を作成しました。Web サイトを公開すると、「JRC エンジンで処理されたドキュメントを C++ スタックで開くことはできません」というエラーがスローされます。サーバーで Web サイトを公開し、クライアントからアクセスしようとしています。.rpt ファイルを app_code に保存しましたが、同じエラーが再び発生しました。そこで、フォルダー 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
4

13 に答える 13

55

.rpt ファイルへのパスを確認してください。エラーの説明は、実際の理由とは関係ありません。.rpt ファイルが見つからないだけです。

私の場合、パスは Reports サブフォルダーにある .rpt ファイルのパスである必要がありました。

Server.MapPath("~/Reports/InvoiceRegular.rpt");

私のために働いた。

于 2013-06-13T18:38:12.970 に答える
30

これは私のために働く

  1. Rpt ファイルを右クリックします。
  2. プロパティを選択する
  3. かわった

    a. アクションを「コンテンツ」としてビルド

    b. 「コピーしない」として出力ディレクトリにコピーします

    c. カスタム ツールとカスタム ツールの名前空間を空にする

于 2012-07-10T17:07:35.887 に答える
6

これらの手順を実行するだけです

(1) 「.rpt」ファイルを右クリックし、「プロパティ」を選択します。

1.a) アクションを「Content」としてビルド

1.b) 出力ディレクトリに「常にコピー」としてコピー

(2) .rpt ファイルへのパスを確認してください Server.MapPath("Your path");

例えば:Server.MapPath("~/Reports/MyReport.rpt");

注: レポート ビューアーを含む rpt と aspx ページの両方が同じフォルダーにある場合は、フル パスを指定する必要はありません。Server.MapPath で filename.rpt のみを指定できます。

于 2013-12-13T06:39:42.297 に答える
4

これが他の誰かに役立つかどうかはわかりませんが、私はこの問題を抱えていました. .rpt ファイルのファイル名を間違って入力していました...ファイル名の 2 つの単語の間にスペースがありました (通常はこの理由で決して行いません) が、コードに名前を含めたときにスペースを残していました。アウト。ファイル名を修正したところ、問題は解決しました。

于 2012-09-07T15:23:49.267 に答える
2

このかなり役に立たないエラーが表示される別の状況を見つけました。

F5 キーを押して Visual Studio で Web アプリケーションを実行/デバッグしても、Crystal Reports (2011) でレポートを開いていると、エラーが発生します。

今日は 1 時間ほど夢中にさせてくれました。

于 2013-10-25T14:13:19.317 に答える
2

私のために働く:ローカルマシンから.rptファイルをコピーし、ホスト上の.rptファイルを上書きすると、うまく機能します。

于 2018-09-03T03:18:46.200 に答える
1

これは私に起こったばかりで、何時間も頭を悩ませた後、ファイルのアクセス許可の問題であることがわかりました。何らかの理由で、CR 開発サーバーから共有カスタム .rpt ディレクトリにコピーするときに、ファイルのアクセス許可がすべて引き上げられ、いくつかのユーザー グループのアクセス許可をファイルに追加する必要がありました。

于 2015-08-01T03:56:00.627 に答える
1

@seropが言及したように、ファイルパスが正しいことを確認してください。また、レポート フォルダーが公開されない場所にも気付きました。そのため、レポート フォルダーを手動で公開する必要がありました。

于 2016-12-22T15:07:50.983 に答える
0

.rptファイルが存在するかどうかを確認してください。存在しない場合は、ローカルからホスティング フォルダーにコピーしてください。作業が開始されます。

于 2016-04-28T06:47:37.607 に答える