几天来我一直在用头撞墙,我需要帮助。 我正在尝试创建一个地理处理服务(将通过 flex 查看器使用),该服务从 GDB 获取许可信息,将其写入文件,然后在用户的计算机上打开它。
我编写的脚本在本地计算机上以及从服务器本身运行时都能完美运行。 但是,一旦脚本作为地理处理服务发布,它就会停止打开文件。
该文件是在网络服务器上创建的,然后通过 url 打开,以便用户可以制作本地副本、打印出来以供签名等。该文件仍在创建、命名和放置在适当的文件夹中,它只是在过程结束时没有被打开。 (虽然 GP 服务认为已完成,但它并没有失败)
这是代码的结尾,这是与我的问题相关的部分:
f = open(r'\\MyWebAddressHere\\Reports\\Permit' + str(PermitNumber) +'.html','w')
f.write(permitStart)
if (BasePermitFee > 0):
f.write(permitBaseFee)
if (PlumbingFee > 0):
f.write(permitPlumbingFee)
if (ElectricFee > 0):
f.write(permitElectricFee)
if (TotalFees > 0):
f.write(permitTotalFee)
f.write(permitEnd)
f.close()
webbrowser.open('MyWebAddressHere/Reports/Permit' + str(PermitNumber) +'.html')
有没有人对 GP 服务发布后打开失败的原因有任何建议?
最佳答案
我不认为这是一个错误 - webbrowser
命令在 GP 服务的上下文中没有意义。想想什么在什么地方执行。
如果您在本地运行代码,则 Python 会在您的实际计算机上运行——该计算机具有登录、显示和一组已安装的程序。告诉它打开网络浏览器是有意义的,因为您在那台计算机上安装了一个或多个浏览器。
在服务器上运行它,同时登录到服务器,同样的事情 - 你仍然有一个登录名,一组已安装的程序。虽然您可能会锁定服务器以减少其漏洞,但它可能仍至少安装了一个能够浏览互联网的程序。
但是,当您将脚本作为 GP 工具运行时,您就进入了一个不同的世界。您没有在本地运行代码,您没有登录到服务器。如果执行webbrowser
命令,应该在哪里打开浏览器窗口?
- 在您的 PC 上?它不能——服务器的 GP 环境不能在您的 PC 上执行随机程序,那将是一个巨大的安全漏洞。嘿,我会写一个脚本来删除 C:\Windows 中的所有内容并将其发布到 ArcGIS Online 上!
- 在服务器上?谁会看到它?没有人登录。
关于Python 脚本不能作为地理处理服务正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31887039/