2012-03-22 188 views
0

从.NET Web服务执行Python脚本时出现问题。从.NET Web服务调用Python脚本

Web服务为python.exe创建System.Diagnostics.Process并将Python脚本路径作为参数传递。

Web服务作为自定义本地帐户运行。如果我将自定义本地帐户添加到管理员组,则python脚本会成功,但我无法将其作为解决方案。

Python脚本无法从ESRI中导入名为ArcPy的库。它看起来像这个模块利用Java JAR从(ESRI的API)调用ArcObjects。

它只在Web服务上下文中运行时失败。如果我使用runas打开cmd shell,将其作为Web应用程序池自定义帐户运行,并调用python脚本,它可以正常工作(即使应用程序池帐户不在管理员组中)。作为Web服务运行时,只需要在管理员组中。

我已经通过procmon查看了w3wp.exe和python.exe的条目,但是我还没有找到任何需要更改权限的内容。

我想知道它为什么从作为应用程序池帐户运行的shell运行,但没有从web服务运行。

我向应用程序池帐户授予每个本地用户权限分配策略,但它不起作用,所以我排除了这一点。

我也更改了Web服务应用程序池以加载用户配置文件,但这也没有帮助。

在IIS应用程序池的上下文中运行system.diagnostics.process与运行为相同帐户的shell相比,执行环境有什么不同?

+1

为什么不使用IronPython而不是执行'python.exe'? IPY与.NET完美集成,特别是> = v4 – sll 2012-03-22 18:05:09

+0

@sll如果我无法实现这个功能,可能会成为一种替代方案。 – 2012-03-22 18:06:41

回答

0

事实证明,它与安全无关。 ESRI安装它是python的实例,并将.PTH文件添加到Lib \ site-packages目录。

我安装了ArcGIS Desktop和ArcGIS服务器,并且都在其中有程序文件目录中的ArcPy python模块。 Python导入错误的模块,因为它是第一个在路径中。

此问题在此ESRI KB中有记录。

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

我不知道为什么它工作时,该帐户是在管理员组虽然。