ネットワーク サービスを IIS ID として使用し、Micorsoft Powerpoint Interop DLL を使用する ASP Web アプリケーションで問題が発生しました。
サーバーおよび開発マシンとして機能するWindows 7コンピューターがあります。
アプリケーションで LAN リソースにアクセスするには、このユーザーを使用する必要があります。
問題は、powerpoint 相互運用 dll を使用する場合 (Microsoft は Web アプリケーションにそれらを推奨していないことを読みましたが、現時点では、他のローカル アプリケーションで持っているコードを再利用する必要があることを読みました)、powerpoint ファイルを作成するメソッドがアイドル状態に見えることです。 Slide Shapes.AddPicture メソッドの呼び出しでアプリケーションをデバッグするとき。
このステートメントを削除すると、相互運用性はうまく機能し、ファイルが作成されますが、なぜ機能しないのかわかりません。
このフォーラムで説明されているように、DCOM サービス コンポーネントを構成しました。
これを行う:
- DCOMCNFG で、マイ コンピュータを右クリックし、プロパティを選択します。
- COM証券タブを選択します
- [アクセス許可] で、[デフォルトの編集] をクリックし、ネットワーク サービスを追加して、[ローカル アクセスを許可する] アクセス許可を付与します。\Users についても同じことを行います。
- 起動とアクティベーションのアクセス許可で、[デフォルトの編集] をクリックしてネットワーク サービスを追加し、「ローカル起動」と「ローカル アクティベーション」のアクセス許可を付与します。\Users についても同じことを行います
OKを押してください。
また、以下の指示に従いました。
Server 2008 での Windows サービスによる Office の自動化
「Ogawa Hack」の概要: システム プロファイル用のデスクトップ フォルダを C:\Windows\System32\config\systemprofile\Desktop として作成し、64 ビット マシンで実行している場合は、別のフォルダを作成します: C: \Windows\SysWOW64\config\systemprofile\Desktop また、フォルダには、Office を「操作」しているユーザーの書き込み権限が必要です。
要約すると、これはコード内の次のステートメントのアクセス許可の問題である必要があります。
Shape shape = slide.Shapes.AddPicture(fileName, MsoTriState.msoFalse, MsoTriState.msoTrue,
pptBoxOffsetX,
pptBoxOffsetY,
pptBoxShapeDimensionX,
pptBoxShapeDimensionY);
また、ファイル名パラメーターで使用されるフォルダーでフル コントロール (ネットワーク サービス ユーザーの読み取りおよび書き込みアクセス許可) を持っていますが、成功した結果はありません。IIS ID を Network Service ではなくローカル ユーザー名 (管理者アカウント) に変更すると、このステートメントが機能し、Web アプリケーションが必要なことを実行するため、これはアクセス許可の問題だと思います。したがって、ネットワーク サービス アカウントを IIS ID として使用して AddPicture メソッドを正常に呼び出すには、さらに何かを構成する必要があります。相互運用メソッドの slide.Shapes.AddShape が機能しているのに、AddPicture が機能していないのは奇妙です。どんな助けでも大歓迎です。前もって感謝します!!!