关于ArcGIS Server 9.2在线编辑和程序部署的问题
最近,在学习基于ArcGIS Server 9.2的应用开发。忙了一些天,一个简单的应用程序出来了,但是当我把程序部署到服务器上时却出现了好多问题。其中一个花了我比较多时间解决的问题就是。用ArcGIS Server 自带的Web Manager发布服务时,应用在线编辑问题就报错。而在我本机上的去没有错。
我的数据是保存在Geodatabase(mdb).
错误如下:
看到这样的问题,我首先想到的是目录的访问权限问题,我确认了一下,目录的访问权限都是可以读写的。数据文件也是可读写的。
确认之后还是报同样的错误。我接着认真看了一下,Manager自带的帮助里介绍发布资源(publish gis resource)和添加服务(add new service)的帮助。看到里边要求,把地图文档(mxd格式)所在在目录共享。照做后,依旧报相同的错误。
接下来,我看了一下,计算机的事件查看器,没有发现相关的错误事件。
然后,在百度上用关键字搜索了一下,找到了以下几个应该注意的地方。
Server 9.2开始支持基于web浏览器的数据在线编辑,要实现这样的功能,对数据有特殊的要求,先来看一下文档是怎么描述的:
Geodata Access |
Allows an end user to perform replication and data extraction in AcrMap |
Map document with a layer from a geodatabase |
具体操作可以参考下面的步骤:
1、将需要在线编辑的数据通过SDE导入到数据库;
2、将该数据注册为版本(Register As Versioned…);
3、在ArcMap中加载这个数据(Layer from a geodatabase);
4、如果有其他的数据也添加到ArcMap中,保存成一个mxd文档;
数据准备就完成了!
发布服务
在Manager->Services中选择“Publish GIS Resource”,选择发布刚才保存mxd文档。可以看到,在Capabilities中“GeoData Access”被自动勾选了。
除了,我的数据不是用SDE管理外,其它基本上的都 一致,反复确认和测试后,错误依旧。
因些,我到ESRI中国社区上发了一个帖子,向社区里的朋友寻求帮助。关注了一整天,有好多的热心的朋友都回答了,得解决方式基本上和在百度上查找到的相似,试过这后,错误依旧存在。
因此,我确步把服务器上的运行环境(除操作系统外)改变的和开发机器上差不多。以下是步骤。
首先,安装了ArcGIS桌面软件 。经测试,错误依旧在 。
接下来,我用ArcCatalog把用Manager发布的服务删除了,重新用ArcCatalog发布了一次,测试,错误没有了。喜。!!
但是,我不服,要是这样的话,每次发布都得用ArcCatalog来做,部署就非常麻烦。而且服务器上一般是不允许安装太多的软件。再说了,ArcGIS 桌面软件 还很庞大。因此,我又比较了一下,Manager和ArcCatalog的异同。所当其冲的,当然是两者的执行者,桌面软件和Web程序,一个是本地用户,一个是NetServices ,两者权限有很大不同。因此,我把ArcGisWebServices,ArcGISSOM, 和ArcGISSOC,NetWorkService等几个用户都加到了Administrators用户组。并在组件服务里,IIS Admin Service的本地启动激活的权限赋予了NetworkServices用户。用Manager重新发布服务。错误又出现了。
这下真的有点气馁了。用ArcCatalog和Manager发布服务时各个选项,我都认真反复测试,确认完全一致。为什么Manager发布的服务会不能编辑呢?
后来,我用ArcCatalog和Manager分别使用了两不同的服务名发布了两个参数一样的服务。在ArcCatalog里认真比较两者Service Properties里的异同。终于发现了一个很重要的参数不同:
发现了,两者的异同。
因此,我在用Manager发布地图的时间,不再从里边选择了,而是自己直接软件入路径。我也明白了为什么用Manager发布服务时,Mxd文档所在的目录要设置成Web共享了。
问题至此得到了解决。^_^