从 .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 服务应用程序池以加载用户配置文件,但这也无济于事。
system.diagnostics.process
当 a在 IIS 应用程序池的上下文中运行与以相同帐户运行的 shell时,执行环境有什么不同?