SuperMapIS.NET不出图问题排查思路
时间:2010-12-31 来源:awei20081
常见原因
不出图的常见的原因如下:
1地图服务器没有启动或者启动失败
2Maphandler书写错误
3服务器地址与端口不能访问
4Output虚拟目录不能访问
5图片访问或输出地址错误
解决方案
现象是由特定的原因引起,而引起不出图的原因情况比较多,针对常见现象我们可以分析是什么原因引起的问题:
现象1:不能连接到地图服务或者连接地图服务失败,这类问题一般是由于地图服务器没启动或者启动失败引起,具体解决方案可以参考《SuperMapIS.NET启动失败常见问题》;
现象2:一般是由于修改了工作空间,而没有重启地图服务,或者工程请求的地图在工作空间中不存在引起,第一种情况的话,建议更改了地图服务发布的工作空间后重启地图服务、web服务器、重新打开浏览器进行浏览,第二种情况建议查看代码请求地图修改为工作空间已有的地图;
现象3:一般WebControl开放方式的MapControl加载图片默认带有进度条,而进度条一直存在表明一直正在获取图片,此时有两种情况,output目录不能访问或者图片访问或输出地址错误,output虚拟目录能否访问可以直接用浏览器浏览output虚拟目录下内容如http://localhost/is/output/图片名,则可以直接看到output目录能否访问了,图片访问地址是否正确可以通过浏览器右下角状态栏观察到图片访问地址是否正确或者直接查看地图服务管理工具查看图片访问地址是否正确;
现象4:一般出现在第一次使用AjaxScripts开发方式开发,部署自己的maphandler时候,除了写代码过程出现细节问题,主要由于对Maphandler的理解及output目录不能访问或者图片访问或输出地址错误,前面已对后面一种原因详细介绍,针对maphandler的理解请参考《maphandler介绍与创建》文档; 现象5与6:一般此问题有两种情况,output目录不能访问或者图片访问或输出地址错误,output虚拟目录能否访问可以直接用浏览器浏览output虚拟目录下内容如http://localhost/is/output/图片名,则可以直接看到output目录能否访问了,图片访问地址是否正确可以通过浏览器右下角状态栏观察到图片访问地址是否正确或者直接查看地图服务管理工具查看图片访问地址是否正确,如果是output虚拟目录不能访问可以查看IIS相关介绍,修改使其正常能访问,如果是图片访问地址错误,修改为能正常访问地址,例如默认的图片访问地址为{hostname},如果局域网访问则修改为服务器IP地址;
现象7:一般是由于图片访问原因,因为图片访问地址默认是主机名,如果局域网访问则有时候访问不到,所以此处建议把图片访问地址修改为主机ip地址;
现象8:一般情况下由于maphandler书写错误引起,此种现象常见于AjaxControl开发方式,由于默认的AjaxControl开发方式拖到页面一个MapControl控件,单击右上角MapControl task面板load Map按钮后弹出加载地图面板,此时需要填写Addr输入框中显示的是ip地址,但是此出需要填写为maphandler,例如本机访问可以为“http://localhost/IS/AjaxDemo/“。
上面只是对常见现象进行了简单分析,如果您想后续开发过程中快速定位问题,找到原因之所在,强烈建议您继续阅读。针对该问题一般情况下要考虑的问题如下,首先确定地图服务器已近启动且启动成功,如果不知道如何判断地图服务器是否启动成功,请参考《判断SuperMap IS.NET启动是否成功的两种方式》,如果启动失败请参考《SuperMap IS.NET启动失败问题排查注意事项》及《SuperMap IS.NET启动失败常见问题》等文档。
其次output虚拟目录是图片发布地址,一般情况下要确保IIS下有一个output目录并配置为能正常访问,默认SuperMapIS.NET安装后会在IIS上创建一个output虚拟目录,地址为http://localhost/IS/Output/;如果创建了不能访问或新建了一个output目录,需要把设置这个目录的匿名访问及集成Windows身份认证并把授权规则设置为所有人访问。
图片访问地址是地图服务器发送给客户端地图服务器产生地图的地址,找到SuperMap IS.NET安装目录/bin的SuperMapIS.config文件,用记事本打开,定位至website=http://localhost/is/output节点,查看此节点设置,是否是上面output的地址;图片输出目录是地图服务器生成地图的目录,找到SuperMapIS.config文件中options output="..\output",默认的出图目录为SuperMap IS.NET安装目录/output,如果修改请重新定向,注意此处的图片访问地址的website所指向的虚拟目录必须为options节点所指向的物理出图路径。
如果工程使用Ajax开发方式,请确定Maphandle是否书写正确,Maphandle正确书写格式 是“ http://localhost/工程虚拟目录/ ”或者 “./”,前提是工程配置了系统引用库和web.config文件地图服务器地址和handler,默认范例为“ http://localhost/IS/AjaxDemo/”,如果是非80端口,请把Maphandler设置为“./”。 建议把Maphandler书写为“./”。在创建了maphandler的工程的Web.config文件中<add key="MapServer_Address" value="localhost" /><add key="MapServer_Port" value="8800" />节点配置了地图服务器,如果web工程和地图服务器不在同一台机子上请把此处MapServer_Address修改为地图服务器的IP地址,并且确定能正常访问该地址和端口。
更多信息
1如果初次安装SuperMap IS.NET请先参考《SuperMap IS.NET安装调试注意事项》
2更加直观快速定位问题请参考使用fiddle或者httpwatch等工具来进行快速分析定位问题。
3跨域访问,如果不明白跨域问题请参考SuperMap IS.NET联机帮助中开发指南—专题介绍—跨域访问相关介绍,常见例子如访问工程地址如http://IP地址/虚拟目录名字/,但是图片访问地址和maphandler都是书写为http://localhost/虚拟目录名字/即有可能引起跨域访问问题,建议如果用IP均用IP,用localhost均用localhost。
4如果使用开发方式为TcpMap,则注意注意建立连接时候写入正确地址和端口,并且地图服务器正常启动、端口和地址能正常访问,常见写法IMap m_map = TcpMap.Create(MapServerAddress, MapServerPort, new Hashtable());。