之前发布了一个绘制等值面的服务,在本机测试的时候始终都可以访问,没有任何的问题,但是在远程访问时,出现了无法获得GP服务结果(注:结果为图片)的问题,而在服务器端确实生成了正确的结果。困扰了很久之后,终于找到了解决的办法。
一般在默认情况下,ArcGIS Server的GIS服务输出文件夹用的是计算机名,可以按照如下方式查看:
打开ArcCatalog
选择GIS服务器,右键自己创建的GIS服务器,比如上图的qzj-pc.然后选择服务器属性,出现如下视图:
默认情况下,虚拟目录采用的是计算机名。而上述说的问题就在这个地方。
当我们远程访问GP服务时,如果结果是图片的话,通过Fiddler我们会发现,客户端在获取服务器端的图片时,其地址会变成:虚拟目录地址+图片名称,例如当按照上图设置时,其地址就是:http://qzj-pc/arcgisoutput/<图片名称.png>(注:一般来说,栅格数据在服务器端生成的图片都是png格式的)。下图是按照如上设置时用Fiddler检测客户端获取结果的地址:
可以发现Host的地址是qzj-pc,也就是计算机名,这里我们可以知道获取结果的地址和ArcCatalog中设置的是一样的。
然而当我们如果是远程访问的时候,如果还是如上设置虚拟目录,那么就会出错,即无论怎样也无法获得GP服务的结果(注:这里是结果地图服务,所以是png图片)。因为如果是远程访问,远程的机器是无法解析hhtp://qzj-pc/arcgisoutput/<图片名称.png>这个地址的。我们通过Fiddler监测也会发现找不到服务器这样的错误提示。
这里的解决办法是两种:
一是在客户端,在Host文件中添加地址的映射,将qzj-pc映射到GIS服务器的ip地址。
二是在服务器端直接将输出的虚拟目录改成:http://<服务器ip>/arcgisoutput。这样在客户端访问的之后则会按照ip地址来取得服务器端的结果,而不是计算机名。
注意:在设置虚拟目录时,需停掉所有的GIS服务,否则无法修改输出的虚拟目录
这样修改后便能够获得服务器端的结果了。
例如下图获得就是SCREEN3大气预测模型下火炬源的污染物扩散示意图:
同时这里还需要注意的问题是,在服务器端需要正确设置arcgisoutput文件的权限,这是客户端获得结果的前提。
(版权所有,转载请标明出处)