- PR -

PDF出力時にエラー

1
投稿者投稿内容
タカシ
会議室デビュー日: 2002/11/12
投稿数: 14
投稿日時: 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() ←ここでエラーが発生しています
-------------------------------------------------------------------------
takahiro
常連さん
会議室デビュー日: 2003/05/12
投稿数: 26
投稿日時: 2004-10-04 11:23
Web.configファイルの impersonate 要素をチェックしてみてください。
あったら、コメント化してみてください。
偽装がうまくいってないのかと

私のところでは、これで解決しまたし。

以上
タカシ
会議室デビュー日: 2002/11/12
投稿数: 14
投稿日時: 2004-10-04 14:49
takahiroさん返信有難うございます。

Web.configファイルに impersonate 要素は存在しなかったです。
さらに色々と調べて分かった範囲で以下の対応を試したのですが、
まだ解決出来ません。

(1)「既定のWebサイト」にある「CrystalReportWebFormView」の
仮想フォルダと実際のフォルダの権限にもASPNETユーザーを追加しました。


(2)NETWORK SERVICEユーザーも今まで追加したフォルダ全てに追加しました。


これらの対応以外でまだ必要な作業はあるのでしょうか?
takahiro
常連さん
会議室デビュー日: 2003/05/12
投稿数: 26
投稿日時: 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システムを配布する場合は、製品買わないとライセンス違反です。

タカシ
会議室デビュー日: 2002/11/12
投稿数: 14
投稿日時: 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パターンで試しましたが、
結果は全て今までと同じエラーが発生しました。


ライセンスの件は了解しました。有難うございます。
タカシ
会議室デビュー日: 2002/11/12
投稿数: 14
投稿日時: 2004-10-04 18:08
さらに色々調べた結果を報告します。

ログを出力する処理も最初は同様のエラーが発生していたのですが、
ログを出力するフォルダに対してASPNETユーザーの書き込み権限を追加すれば
問題なく動作するようになりました。

PDFの生成は特殊な制御が掛かっているんでしょうか?
もしくはWindows2003上では特殊な設定が必要なのでしょうか?
ローカルのWindows2000Proは最初から何の問題もなくPDFが参照出来ます。
タカシ
会議室デビュー日: 2002/11/12
投稿数: 14
投稿日時: 2004-10-04 21:14
PDF出力ですが解決しました。

PDFを出力するフォルダにNETWORK SERVICEユーザーの権限を追加すればいけました。
色々と有難うございました。
1

スキルアップ/キャリアアップ(JOB@IT)