2012-03-22 7 views
0

.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アプリケーションプールのコンテキストで実行され、同じアカウントとして実行されているシェルと異なる場合の実行環境について教えてください。

+1

「python.exe」を実行するのではなく、IronPythonを使用しないのはなぜですか? IPYは.NETと完全に統合されていますが、特に> = v4> – sll

+0

@sllこれを動作させることができない場合は、代わりになる可能性があります。 –

答えて

0

セキュリティとは関係ありません。 ESRIはpythonのインスタンスをインストールし、.PTHファイルをLib \ site-packagesディレクトリに追加します。

ArcGIS DesktopとArcGIS Serverの両方がインストールされており、どちらもArcPy Pythonモジュールがプログラムファイルディレクトリにあります。 Pythonが間違ったモジュールをインポートしていたのは、それが最初のパスだったからです。

問題はこのESRI KBに記載されています。

http://support.esri.com/en/knowledgebase/techarticles/detail/39029

私はアカウントはいえ、管理者グループにいたとき、それが働いた理由はわかりません。

関連する問題