试用场景
当部署web工程的服务器同时具有内外网IP,而且web工程需要发布在内外网环境中:即内网用户需要通过内网IP访问应用程序,外网用户需要用外网IP来访问。
部署方法
1、把web工程发布网站根目录下,Output文件夹即图片服务器发布到网站output虚拟目录下(即:应用程序为http://[IP]/[应用程序名]/ 对应Output为http://[IP]/Output/ ,或者 http://[IP]:[Port]/ 对应的Output为http://[IP]:[Port]/Output/)
2、修改访问图片主机名为“../../../../../../../../../../output”,直接修改SuperMap IS.NET安装目录下/bin/SuperMapIS.config文件中<options output="..\output" website="../../../../../../../../../../
output" /> ,“../”个数为10,
3、Web工程中必须设置比例尺控制,如默认的AjaxDemo工程中Default.aspx设置的<SMIS:MapScale MapName="changchun" Scales="100000,50000, 25000, 12500,6250,3125,1000,500">,此处MapName改为工程地图名字,Scales改为地图的控制比例尺,如果设置多幅地图设置多个SMIS:MapScale节点设置地图名及比例尺,对于Ajaxscripts及iClient 富客户端开发方式请参考响应的帮助文档设置地图比例尺。
4、修改MapHandler地址为”./”。
原理:
1、地图图片请求格式:
{http://localhost/}{ajax/World/1.562052550140726e-8/4/2/256/png/0/false/true/map.ashx?}
第一个大括号中为MapHandler所在路径,也就是工程发布路径
第二个大括号为访问地图缓存路径深度数,即有多少个“../”个数,此处为10,所以该连接的“../”数为10,此路径可以使用httpwatch或者fiddle等工具来查看,如下图是httpwatch捕获的请求信息:
2、调试过程中需要注意的问题:
1、修改了之后重启地图服务器,IIS服务器。
2、清除IE缓存
3、web工程缓存(默认在C:\Windows\Microsoft.NET\Framework\v2.0.50727
\Temporary ASP.NET Files目录下,名字为工程名)。
4、不断调整../的个数,这个个数根据具体环境会有差异,一般根据上面地图请求格式后面的访问地图缓存路径深度数,根据具体情况会有差别。
这两天有同事发现新的解决这个问题的思路比上面快捷多了,列出方法如下:
1、修改maphandler地址为"./".
2、打开SuperMap IS.NET的安装目录bin文件夹下的SuperMapis.config文件中修改website=" http://localhost/is/output"为website="/is/output",然后重启一下iis及地图服务器。
按照上面两种思路在跟客户解决问题过程中发现有一些情况还是需要注意:
1、如果工程网站在一个端口下,而图片服务器即:output在另外一个端口下这种情况不行,尽量在webgis工程所属的网站上新建一个is /output虚拟目录,或者直接把工程发布到默认网站上面。其实这个在那个网站无所谓,只要归于不同的应用程序池即可为不同的虚拟目录设置不同的应用程序池,即可充分用于iis的性能。
2、maphandler修改为./ 之后访问不到,这种情况下可以用脚本代码判断访问网站的地址,是内网地址这地图初始化时候把maphandler地址改为内网地址,如果是外网则改为外网地址。