在客戶的生產環境下,處於安全考慮,網絡環境比較復雜,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.檢查是否存在跨域訪問問題,設置跨域訪問的安全策略;