.NETWebサービスからのPythonスクリプトの実行に問題があります。
WebサービスはSystem.Diagnostics.Process
forpython.exeを作成し、Pythonスクリプトパスを引数として渡します。
Webサービスはカスタムローカルアカウントとして実行されています。カスタムローカルアカウントを管理者グループに追加すると、Pythonスクリプトは成功しますが、解決策としてこれを行うことはできません。
Pythonスクリプトは、ArcPyと呼ばれるESRIからのライブラリのインポートに失敗しています。このモジュールは、Java JARを使用して(ESRIのAPI)からArcObjectsを呼び出すようです。
Webサービスのコンテキストで実行した場合にのみ失敗します。runasを使用してcmdシェルを開き、それをWebアプリプールカスタムアカウントとして実行し、Pythonスクリプトを呼び出すと、正常に機能します(アプリプールアカウントが管理者グループにない場合でも)。Webサービスとして実行する場合は、管理者グループに含まれている必要があります。
procmonでw3wp.exeとpython.exeのエントリを調べましたが、アクセス許可を変更する必要があるものが見つかりませんでした。
なぜそれがアプリプールアカウントとして実行されているシェルからは機能するが、Webサービスからは機能しないのか疑問に思っています。
すべてのローカルユーザー権限の割り当てポリシーをアプリプールアカウントに付与しましたが、機能しなかったため、除外しました。
また、ユーザープロファイルをロードするようにWebサービスアプリプールを変更しましたが、それも役に立ちませんでした。
system.diagnostics.process
がIISアプリプールのコンテキストで実行される場合と、同じアカウントとして実行されるシェルの場合の実行環境の違いは何ですか?