總結基於ArcGIS Server 9.2 .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" c />中的charset即可。
2)、js的編碼可以用UE或者vs.net編輯器更改,aspx似乎由webconfig的配置來決定。
3)、用ArcGIS Server時web.config最好用utf-8.
備註:本文引用自http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=20312&highlight=ArcGIS%2BServer%2B9.2(需是ESRI論壇註冊用戶才能訪問網頁)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章