.NET WebサービスからPythonスクリプトを実行する際に問題が発生しました。.NET WebサービスからPythonスクリプトを呼び出す
Webサービスはpython.exeのSystem.Diagnostics.Process
を作成し、Pythonスクリプトパスを引数として渡します。
Webサービスはカスタムローカルアカウントとして実行されています。私がカスタムローカルアカウントを管理者グループに追加すると、pythonスクリプトは成功しますが、解決策としてこれを行うことはできません。
Pythonスクリプトは、ArcPyというESRIからライブラリをインポートできません。このモジュールはJava JARを利用して(ESRIのAPI)からArcObjectsを呼び出すようです。
Webサービスのコンテキストで実行すると失敗します。 runasを使用してcmdシェルを開いてWebアプリケーションプールのカスタムアカウントとして実行し、pythonスクリプトを呼び出すと、(たとえアプリケーションプールアカウントが管理者グループにない場合でも)正常に動作します。 Webサービスとして実行される場合、管理者グループに所属する必要があります。
私はw3wp.exeとpython.exeのエントリについてprocmonを調べましたが、アクセス許可を変更する必要があるものは見つかりませんでした。
私はそれがなぜアプリケーションプールアカウントとして実行されているシェルから動作しているのだろうが、Webサービスからは動作しないのだろうか。
すべてのローカルユーザー権利割り当てポリシーをアプリケーションプールアカウントに付与しても機能しませんでしたので、私はそれを排除しました。
また、ユーザープロファイルを読み込むようにWebサービスアプリケーションプールを変更しましたが、それでも問題はありませんでした。
system.diagnostics.process
がIISアプリケーションプールのコンテキストで実行され、同じアカウントとして実行されているシェルと異なる場合の実行環境について教えてください。
「python.exe」を実行するのではなく、IronPythonを使用しないのはなぜですか? IPYは.NETと完全に統合されていますが、特に> = v4> – sll
@sllこれを動作させることができない場合は、代わりになる可能性があります。 –