- - PR -
PDF出力時にエラー
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-10-01 20:35
IEから帳票をクリスタルレポート(VS.Net版)で作成していますが、
PDFをプレビューに行くと以下のエラーが出ます。 エラー内容 ------------------------------------------------------------------------- CrystalDecisions.CrystalReports.Engine.LoadSaveReportException: ファイルC:\WINDOWS\TEMP\temp_38ecbff8-7b5e-4b6b-90ea-8d08530d01fb.rpt のエラー : レポート ファイルのアクセスが拒否されました。別のプログラムで使用されている可能性があります。 ------------------------------------------------------------------------- ローカルの開発環境でのWebサーバー(Windows2000Pro IIS6.0)では問題なくPDFプレビューができます。 エラーの出るWebサーバーはWindows2003(IIS6.0)です。 エラーの個所は以下ソースの CrtLetter.Export() のメソッドを実行した時に発生します。 なお、ASPNETユーザーにはブレビューするためのPDFファイルを作成しているTEMPフォルダに 書き込み権限を与えています。 テスト的にASPNETユーザー自身にもAdministrator権限を持たせています。 色々と調べたのですが、Windowsサーバーの場合は、別にクライアントライセンス が必要かもしれないと聞いたのですが、実際どうなんでしょうか? ご存知の方いましたらご教授下さい。宜しくお願い致します。 PDF出力のソース ------------------------------------------------------------------------- 'レポート表示 CrtLetter = New RepLetter CrtLetter.SetDataSource(ds_Letter) Dim Fname As String Dim crExportOptions As New CrystalDecisions.Shared.ExportOptions Dim crDiskFileDestinationOptions As New CrystalDecisions.Shared.DiskFileDestinationOptions Dim PDF_FILE_PATH = ConfigurationSettings.AppSettings("pdfFilePath") '一時出力PDFファイルの表示 Fname = PDF_FILE_PATH & "RepLetter" & Session.SessionID.ToString & ".pdf" crDiskFileDestinationOptions.DiskFileName = Fname crExportOptions = CrtLetter.ExportOptions With crExportOptions .DestinationOptions = crDiskFileDestinationOptions .ExportDestinationType = CrystalDecisions.[Shared].ExportDestinationType.DiskFile .ExportFormatType = CrystalDecisions.[Shared].ExportFormatType.PortableDocFormat End With CrtLetter.Export() ←ここでエラーが発生しています ------------------------------------------------------------------------- |
|
投稿日時: 2004-10-04 11:23
Web.configファイルの impersonate 要素をチェックしてみてください。
あったら、コメント化してみてください。 偽装がうまくいってないのかと 私のところでは、これで解決しまたし。 以上 |
|
投稿日時: 2004-10-04 14:49
takahiroさん返信有難うございます。
Web.configファイルに impersonate 要素は存在しなかったです。 さらに色々と調べて分かった範囲で以下の対応を試したのですが、 まだ解決出来ません。 (1)「既定のWebサイト」にある「CrystalReportWebFormView」の 仮想フォルダと実際のフォルダの権限にもASPNETユーザーを追加しました。 (2)NETWORK SERVICEユーザーも今まで追加したフォルダ全てに追加しました。 これらの対応以外でまだ必要な作業はあるのでしょうか? |
|
投稿日時: 2004-10-04 16:01
全てに権限の設定は、特に必要ないかと。
必要なのは、(1)出力先のフォルダーにASPNETユーザを書込みチェックを設定して 置くだけです。 C:\WINDOWS\TEMP\temp_38ecbff8-7b5e-4b6b-90ea-8d08530d01fb.rpt というのは、単なる作業ファイルでそのあと書き込むフォルダーに 書けないといっているだけかと思いますが。 CR.NETが権限不足で動作できないだけです。 (2)Web.configに下記の記述無かったですか。 <identity impersonate="true"/> 偽装して、別ユーザーで動作させているとこうなるんですがね。 以上 >色々と調べたのですが、Windowsサーバーの場合は、別にクライアントライセンス >が必要かもしれないと聞いたのですが、実際どうなんでしょうか? これは、不要です。 おまけのCR.NETを使っているのであれば。 ライセンス追加する場合は別ですが。おまけは5calです。 製品版 CR v10は別ですよ。 おまけライセンスは無視されますので 必ずWebシステムを配布する場合は、製品買わないとライセンス違反です。 |
|
投稿日時: 2004-10-04 17:15
takahiroさん。度々の返信有難うございます。
PDFの出力先のフォルダにはASPNETに書込みの権限を追加しています。 プログラムでは以下の場所のフォルダになります。 ---------------------------------------------------------------- Fname = PDF_FILE_PATH & "RepLetter" & Session.SessionID.ToString & ".pdf" ---------------------------------------------------------------- 念のためにこのPDFを生成しているプログラムのフォルダにもASPNETの書込み権限を追加しています。 なお今までASPNETに権限を追加したフォルダは以下の通りです。 ・C:\Inetpub\wwwroot\<プロジェクト名> ・C:\Inetpub\wwwroot\<プロジェクト名>\<プログラムフォルダ> ・PDF出力先フォルダ ・C:\WINDOWS\Temp あとWeb.configに <identity impersonate="true"/> は存在しなかったです。 念のため、Web.configに <identity impersonate="true"/> を追加した状態と <identity impersonate="false"/> の状態と、完全に消した状態の3パターンで試しましたが、 結果は全て今までと同じエラーが発生しました。 ライセンスの件は了解しました。有難うございます。 |
|
投稿日時: 2004-10-04 18:08
さらに色々調べた結果を報告します。
ログを出力する処理も最初は同様のエラーが発生していたのですが、 ログを出力するフォルダに対してASPNETユーザーの書き込み権限を追加すれば 問題なく動作するようになりました。 PDFの生成は特殊な制御が掛かっているんでしょうか? もしくはWindows2003上では特殊な設定が必要なのでしょうか? ローカルのWindows2000Proは最初から何の問題もなくPDFが参照出来ます。 |
|
投稿日時: 2004-10-04 21:14
PDF出力ですが解決しました。
PDFを出力するフォルダにNETWORK SERVICEユーザーの権限を追加すればいけました。 色々と有難うございました。 |
1