ArcGIS Serve服务无法访问的解决方法

      在客户的生产环境下,处于安全考虑,网络环境比较复杂,GIS 服务器一般是不可以访问外网的,而开发商的测试环境或者应用服务器又是分布在不同的服务器下,那么,这样就需要解决跨域访问的问题。

      首先,我们需要说明一下在ArcGIS Server服务目录Services Directory里面通过ArcGIS Javascript浏览服务是需要Internet环境的,离线情况下肯定是不能预览的,因为它需要访问在线的javascript API。

         其次,在实际开发环境我们可能需要叠加多源底图数据和业务数据,而数据投影信息的不一致或者缺失也会导致服务加载失败

        上次在客户现场遇到的问题:服务发布后ArcGIS JavaScript里面无法预览(有Internet环境),开发环境不能访问,没有日志记录无代码提示。

         问题分析:经检查发现客户就将一张图片加载到mxd文档中进行了服务发布,而且数据没有投影坐标系;

         解决方法:给数据定义投影,重新发布服务,ArcGIS JavaScript里面可以看到服务,开发环境不能访问,无代码提示;

         进一步分析发现,GIS 服务器和开发环境存在跨域访问问题,有些代码可能会提示(服务安全问题,无法加载的提示)。

         解决方法:

               生产跨域访问安全策略文件crossdomain.xml:

<?xml version="1.0"?>

<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>

<site-control permitted-cross-domain-policies="all"/>

<allow-access-from domain="*"/>

</cross-domain-policy>

注:设置安全策略为允许所有连接访问

           将以上内容复制到文本文件里面,并修改其文件名为crossdomain.xml

               然后放在web服务器的根目录 问题解决:比如ArcGIS Server for .Net应该是IIS的根目录(如:C:/Inetpub/wwwroot);ArcGIS Server for Java应该是web_output目录(如:C:/Program Files/ArcGIS/java/web_output)。对于10.0版本可能为**/ArcGIS/Server10.0/java/manager/web_output

         总结:对于服务不能访问的问题,应该考虑以下三个方面:1.数据问题,投影信息是否正确,多源数据投影是否一致;2.服务是否正常,是否可以正常预览;3.检查是否存在跨域访问问题,设置跨域访问的安全策略;

 

 

 

 

posted @ 2013-03-26 11:23  esrixa  阅读(6492)  评论(0编辑  收藏  举报