2

テンプレート.xltおよび.rptを使用して(Crystalを使用して)E​​xcelおよびPDFレポートを生成するMVC Webアプリケーションがあります。テンプレートをWebサーバー自体に配置すると、グリッチなしでレポートが生成されますが、テンプレートをリモートに配置すると、場所を確認すると、プロセスモニターで確認したアクセス拒否エラーが発生します。以下のスクリーンショットをご覧ください。

ここに画像の説明を入力してください

サーバーからエクスプローラーを介してリモートフォルダーを手動で参照すると、すべてOKで、必要なファイルを開くことができます。サーバーがファイルを読み取るときに、アクセス拒否エラーが発生します。私のWebアプリケーションは、統合パイプラインでApplicationPoolIdentityを使用しています。認証は、なりすましとWindows認証を介して行われます。さらに紛らわしいのは、Excelテンプレートを実行するユーザーは私自身ですが、PDFの生成に使用されるユーザーがIIS Apppoolであるのに対し、アクセスが拒否されることです。

アクセス拒否の問題を解決する方法を知っている人はいますか?私はすでにすべてのユーザーをそのフォルダーにフルアクセスさせようとしましたが、それでも機能しません。

追加情報

IIS 7.5を使用しています。また、共有が存在するファイルサーバーを確認しました。イベントログでは、登録したユーザーは私ではありませんが、次の詳細が含まれています。

An account was successfully logged on.

Subject:
    Security ID:        NULL SID
    Account Name:       -
    Account Domain:     -
    Logon ID:       0x0

Logon Type:         3

New Logon:
    Security ID:        ANONYMOUS LOGON
    Account Name:       ANONYMOUS LOGON
    Account Domain:     NT AUTHORITY
    Logon ID:       0x90eb7c7
    Logon GUID:     {00000000-0000-0000-0000-000000000000}

Process Information:
    Process ID:     0x0
    Process Name:       -

Network Information:
    Workstation Name:   MYWEBSERVER
    Source Network Address: 10.10.10.01
    Source Port:        00000

Detailed Authentication Information:
    Logon Process:      NtLmSsp 
    Authentication Package: NTLM
    Transited Services: -
    Package Name (NTLM only):   NTLM V1
    Key Length:     128

アップデート

このインスタンスではApplicationPoolIdentityを使用する必要があるため、ApplicationPoolIdentityを引き続き使用できるソリューションを探しています。

別の更新

以下の@Davidsの提案を試しましたが、同じエラーメッセージが表示されます

System.Runtime.InteropServices.COMException(0x800A03EC):MicrosoftExcelはファイル'\ MyServer \ Templates\MyTemplate.xlt'にアクセスできません。考えられる理由はいくつかあります。

•ファイル名またはパスが存在しません。•ファイルが別のプログラムによって使用されています。•保存しようとしているブックは、現在開いているブックと同じ名前です。Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename、Object UpdateLinks、Object ReadOnly、Object Format、Object Password、Object WriteResPassword、Object IgnoreReadOnlyRecommended、Object Origin、Object Delimiter、Object Editable、Object Notify、Object Converter、Object AddToMru、Object Local、Object CorruptLoad)at Ci.Infrastructure.Reporting.ReportProviderExcel.RunReport()

4

1 に答える 1

2

あなたの問題は、ドメイン アカウントまたはネットワーク サービス アカウントとして実行するようにアプリケーション プールを構成する必要があるためだと思います。

後者を選択した'<domainname>\<machinename>$'場合、特定のアカウントとして実行することを選択した場合にアクセス許可を付与する必要があります。これは、アクセス許可を付与する必要があるユーザーです。

既にすべてのユーザーにアクセス権を付与しているため、アプリ プール ユーザーを変更する場合にすぎませんが、機能するようになったら、これを特定のアカウントに制限することをお勧めします。

詳細については、次のリンクを参照してください。

http://www.iis.net/learn/manage/configuring-security/application-pool-identities

于 2012-12-18T22:11:23.960 に答える