总结基于ArcGIS Server 9.2 Dot Net ADF的WebGIS项目部署问题

过去的几个月内对基于ArcGIS Server9.2的开发有所接触,这也是第一次真正自己动手作WebGIS的开发,期间遇到诸多问题。最突出的就是二次开发WebGIS的部署问题,以及字符集冲突的问题。问题描述分别见请教ArcGIS server 9.2做的题目的部署问题??Arcgis Server DotNet Web ADF 模板例子改变字符集后出现的问题。同意的问题在ESRI BBS也有提问,由于时间断断续续这些问题一直没有找到很好的办法,最近几天才解决,故在此总结一下。

1、关于部署时地图数据源问题的解决:

在web.config中添加一个地图数据源节,部署时只要修改web.congfig中的值就ok了,呵呵。就是请教一文中说的第2种方法,感觉很早就应该这么搞了,简直一劳永逸,所有用到地图资源的地方都可以共享。具体如下。在web.config文件中:

<appSettings>
    <!--地图数据源-->
    <add key="MapDataSource" value ="MyHost"/>
</appSettings>

在某个类假设是CommonUntility中加几个static方法,当然也可以把许多地图资源访问操作封装在这里了。

 1  public   class  CommonUntility
 2  {
 3       static  MapResourceManager m_MapResourceManager;
 4       static  MapResourceItem resourceItem; // 地图数据源
 5     string  QueryLayer; // 图层名
 6      // 设置地图数据源
 7     static   private   void  setResourMng()
 8      {
 9           if  (resourceItem != null )
10          {
11               return ;
12          }
13          resourceItem  =   new  MapResourceItem();
14          resourceItem.Name  =   " MapResourceItem0 " ;
15          resourceItem.Definition  =   new  GISResourceItemDefinition();
16 
17           // 获取地图数据源
18           string  MapDataSource  =  ConfigurationManager.AppSettings[ " MapDataSource " ];
19          resourceItem.Definition.DataSourceDefinition  =  MapDataSource;
20          resourceItem.Definition.DataSourceType  = " ArcGIS Server Local " ;
21          
22          resourceItem.Definition.ResourceDefinition  =   " Layers@XIAN "
23          resourceItem.Definition.DataSourceShared = true ;
24 
25          resourceItem.DisplaySettings  =   new  DisplaySettings();
26          resourceItem.DisplaySettings.DisplayInTableOfContents  =   true ;
27          resourceItem.DisplaySettings.Visible  =   true ;
28          
29          m_MapResourceManager  =   new  MapResourceManager();
30          m_MapResourceManager.ResourceItems.Insert( 0 , resourceItem);
31          m_MapResourceManager.CreateResource(resourceItem);
32          resourceItem.InitializeResource();        
33      }
34       // 获取ResourceItem
35       static   public  MapResourceItem GetResourceItem()
36      {
37          setResourMng();
38           return  resourceItem;
39      }
40  }

用的地方调用GetResourceItem()就以了。调用如下:

 1  // 页面初始化
 2  protected   void  Page_Load( object  sender, EventArgs e)
 3  {
 4       if  ( ! IsPostBack)
 5      {
 6           if  (MapResourceManager1.ResourceItems.Count  ==   0 )
 7          {
 8              MapResourceManager1.ResourceItems.Add(CommonUntility.GetResourceItem());
 9          }
10     }
11  }

 

2、关于字符集问题的解决:

此问题最开始是因为html用的gb2312,而aspx用的utf-8,这样存在一个矛盾:

a、当webconfig用gb2312时从html到aspx的提交正常,数据库操作能够正确完成,但是Arcgis server自带的例子的编辑功能无法正常进行,操作中出现脚本错误。

b、当把webconfig改成utf-8时,编辑正常但是html到aspx的提交出现问题,aspx页面无法从html中获取参数。

此前的错误就是因为js,html,aspx的编码都不完全一致导致。试验发现:

1)、html不需要更改编码,只改写<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />中的charset即可。

2)、js的编码可以用UE或者vs.net编辑器更改,aspx似乎由webconfig的配置来决定。

3)、用ArcGIS Server时web.config最好用utf-8.

你可能感兴趣的:(server)