地理信息系统知识库gisbase

http://www.cnblogs.com/gisbase
  新随笔  :: 联系 :: 订阅 订阅  :: 管理

ArcGIS Server开发一个最容易忽略的错误

Posted on 2010-01-29 10:22  gisbase  阅读(682)  评论(0编辑  收藏  举报

ArcGIS Server开发中一个最容易忽略的错误

作者:gisbase 来源:www.gisbase.cn

      昨天开发了一个ProportionalSymbolRender(梯度着色)的功能,我想当然的按照ArcEngine下的写法,运行也没有提示,就是看不到地图。

折腾了一个下午也没有搞定,最后就把代码转到ArcEngine桌面系统下,一切正常。现在基本确定,代码思路没有问题,那是哪里出错了呢,nnd 22点了,该走了。上网搜一下吧,最后看到了这个文章《ArcGIS常见问题集锦》(http://www.gisbase.cn/chxnews.asp?id=861),其中有条就是俺犯的错误,使用了new。

现把问题记下,时刻提醒自己。

 

 1 到底能不能使用new关键字来创建对象?
   这是我们在开发ArcGIS Server过程中经常遇到的,也是我们一直在强调的,从9.0,9.1开始就一直强调,不过9.2的情况和9.2以前的版本还有所不同,因为9.2版本中ADF级别多了很多类,这些类是可以使用new关键字来创建的,但是涉及到服务端的com组件的时候还是不能使用new关键字,都需要使用ServerContextcreateobject来实现。 

在使用ServerContextcreateobject来实现的时候,需要注意的是createobject的参数“CLSID”,
该参数的规律为“esri”+命名空间+ 类名,比如说:要创建一个ESRI.ArcGIS.Geometry.IPoint对象, ESRI.ArcGIS.Geometry.IPoint pt =ServerContext.CreateObject("esriGeometry.Point") as ESRI.ArcGIS.Geometry.IPoint;
CLSID = esri + esriGeometry.Point
同样对于其他对象也是如此,再比如:
ESRI.ArcGIS.Geodatabase.ITableSort pTableSort = ServerContext.CreateObject("esriGeodatabase.TableSort") as ESRI.ArcGIS.Geodatabase.ITableSort; CLSOD = esri + esriGeodatabase.TableSort

 

还有一个错误,也是初学者容易犯的,也做个记号吧。

2 Web Application中看不到图片的问题
这是因为没有在Web App中指定连接用户引起的,有两种方式可以来为Web App添加用户名和密码。
A 在vs2005的解决方案管理器中,在相应的网页名称点右键,点击Add ArcGIS Identity

在对话框中输入连接GIS Server的用户名,密码,和机器名称。

B 直接在Web AppWeb.Config中添加明码的identity标签,里面指定用户名和密码。
格式如下:
<Identity impers userName = "username" password = "password">