一般来说,在地图网站发布后,如果地图区域显示为空白,但可以看到其他控件,可能是因为:1、引用的service运行不正常;2、通过local方式连接而没有添加arcgis identity;3、Web Server机器名中含有下划线“_”。但实际情况可能不止这些,碰到这个问题后只能耐心寻找原因来解决问题。
今天刚好碰到了这个情况:用模板程序发布一个网站,mapresource manager中添加了一个经过cache的map service,本机浏览正常,但通过外网浏览的时候,界面显示正常,地图区域空白;如果引用一个没有经过cache的服务的话,外网和本机浏览都正常。网络是这样的,web server和gis server都在本机上,本机处于局域网中,通过路由的转发规则设置外网访问网络ip时自动转到本机ip上来。cache和非cache的服务区别就在于显示地图时,前者是直接获取服务器上的图片,而后者是gis server动态生成图片然后发送到客户端。那么可以看出是在获取缓存图片时出问题了,而本机可以访问到,外网却访问不到,那么估计可能和虚拟路径有关。在外网机器上查看http请求,发现如图情况:
可以看出,在获取其他控件的图片时,使用了网络的对外ip,而获取cache图片时使用的确实本机名。毫无疑问是cache路径的虚拟目录设置不对。一般安装完ags后,设置cache,job,output所对应的虚拟路径时,习惯用hostname作为域名,这和iis设置相符,但如果要对外发布的话,要考虑到这个情况。更改了cache路径的虚拟目录后,外网浏览就程序就正常了。
请问老王:1.怎么修改“cache路径的虚拟目录”啊?2.修改是指要把hostname改为对外ip是吧!
写不吝赐教!
@匿名:
1、在服务属性中,参考这个图片:
http://webhelp.esri.com/arcgisdesktop/9.3/published_images/gpc_gpserv_200.png
2、是的
明白了,十分感谢!
请问老王,我把hostname改为IP地址了,怎么在web程序里面还是显示为空白?
先得确定你的问题是不是和我描述的一样?用fiddler或firebug看一下,程序出错的具体请求是什么?
您好,很冒昧打扰了。想请教一个ArcGIS Server部署问题:ArcGIS Server安装在内网(192.168.1.19)的机器上面。虚拟目录(Output、Cache等已改为公网地址:121.33.218.242:16800),IIS端口是80,通过端口映射,将外网121.33.218.242的16800端口映射到19机器的80端口上面,在浏览器上面可以查看可以查到服务的描述信息(http://121.33.218.242:16800/ArcGIS/rest/services/WebXuzhou84/MapServer),但在(http://121.33.218.242:16800/ArcGIS/rest/services/WebXuzhou84/MapServer?f=jsapi)无法查看地图,显示空白;查看网页源码(截图:http://upload.api.weibo.com/2/mss/msget?source=209678993&fid=203681457)看到脚本没有把端口写上( var layer = new esri.layers.ArcGISTiledMapServiceLayer(“http://121.33.218.242/ArcGIS/rest/services/WebXuzhou84/MapServer”);
)。知道如何配置使得外网可以正确访问?
已经在微博上回答了,是services directory中arcgis javascripit api连接配置问题。