4

WebApplication をアップロードしました。私のアプリケーションは、Crystal Reports 2008 sp3 を使用した VS2008 にあります。パラレルプレックスサーバーにアップロードしました。Crystal Reports に必要なすべての Dll を Bin フォルダーに追加しました。私のレポート パスも正しいです。

私が受け取るエラーは

Line 41:         ReportDocument myreport = new ReportDocument();
Line 42:         string reportPath = Server.MapPath("~/CrystalReport.rpt");
Line 43:         myreport.Load(reportPath);
Line 44: 
Line 45:         myreport.SetDataSource(ds);


[COMException (0x800001fb): Invalid file name.]
   CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options) +0
   CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options) +95
   CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +356

[CrystalReportsException: Load report failed.]
   CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +418
   CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob) +895
   CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename) +84
   _Default.CreateReport() in d:\inetpub\vhosts\mydomain.in\subdomains\mysubdomain\httpdocs\Default.aspx.cs:43
   _Default.Page_Load(Object sender, EventArgs e) in d:\inetpub\vhosts\mydomain.in\subdomains\mysubdomain\httpdocs\Default.aspx.cs:21
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
   System.Web.UI.Control.OnLoad(EventArgs e) +99
   System.Web.UI.Control.LoadRecursive() +50
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

エラーの場所を取得できません。レポートはルート フォルダー自体にあります。それで、これの問題は何ですか。別のフォルダー aspnet_client があります。それは私たちがそれを行う必要があるのですか?

お返事お待ちしております

4

3 に答える 3

15

この同じ問題は、かなり長い間私を悩ませていました。今、私は答えを見つけました:)

フォルダc:\windows\temp に移動し、そのproperties->security Add new User " IIS_IUSRS" で、フル/読み取りおよび書き込み機能を付与します。

それは私にとって問題を解決しました。

それがあなたにとってもうまくいくことを願っています:)

于 2012-09-25T06:29:14.873 に答える
4

ここで確認することがあります。

ファイル名、パスが無効であるか、CR がファイルにアクセスできないため、このエラーが発生しています。

パスとファイル名に問題がない場合は、 Network Service一時フォルダーへの読み取り/書き込みアクセス許可があることを確認する必要があります (通常は)。C:\windows\Temp

それでも問題が解決しない場合は、Temp フォルダーがいっぱいで、CR がガベージをクリーニングしていない可能性があります。

この場合は、Report オブジェクトを適切に破棄し、GC を呼び出しクリーンアップしていることを確認する必要があります。

CR が予期しない動作をすることがあります。ReportDocument私はこれを難しい方法で学びました。オブジェクトで dispose を呼び出した後でGC.Collect()も、Temp.rptフォルダー内のファイルはクリーンアップされません。そして、いいえには限界があります。CR がそれ以上のレポート要求の実行を停止した後、Temp フォルダー内の .rpt ファイルの。

ReportDocument奇妙なことに、関数またはイベント ハンドラーの側でオブジェクトを宣言すると、これが発生します。ただし、ReportDocument をページ全体のグローバル スコープで宣言すると、Crystal Reports は、Dispose メソッドを呼び出すと一時的な .rpt ファイルを喜んで削除します。

これにより、問題を解決するための洞察が得られることを願っています。

于 2012-04-23T16:55:20.117 に答える