几天来,我一直把头撞在墙上,我需要帮助。
我正在尝试创建一个地理处理服务(将通过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在实际计算机上运行-该计算机具有登录名,显示内容和一组已安装的程序。告诉它打开网络浏览器很有意义,因为您在该计算机上安装了一个或多个浏览器。

在服务器上运行它,然后登录到服务器,同样的事情-您仍然具有登录名和一组已安装的程序。虽然您可以锁定服务器以减少其漏洞,但它可能仍至少安装了一个能够浏览Internet的程序。

但是,当您将脚本作为GP工具运行时,您将处于另一个世界。您不在本地运行代码,也未登录服务器。如果执行webbrowser命令,应该在哪里打开浏览器窗口?


在您的PC上?不能-服务器的GP环境无法在您的PC上执行随机程序,这将是一个巨大的安全漏洞。嘿,我将编写一个脚本,删除C:\ Windows中的所有内容并将其发布在ArcGIS Online上!
在服务器上?谁会看到?没有人登录。

10-07 19:28
查看更多