target=‘CFH.ConfigurationFactoryHost‘
machine=‘IBM3850X5‘
thread=‘24072‘
elapsed=‘0.31200‘>Server Object instance is successfully created on machine IBM3850X5.</Msg>
<Msg
time=‘2011-11-15T13:25:49‘
type=‘INFO3‘
code=‘4006‘
target=‘CFH.ConfigurationFactoryHost‘
machine=‘IBM3850X5‘
thread=‘24072‘
elapsed=‘0.32800‘>Server Context created.</Msg>
<Msg
time=‘2011-11-15T13:25:50‘
type=‘INFO3‘
code=‘4007‘
target=‘CFH.ConfigurationFactoryHost‘
machine=‘IBM3850X5‘
thread=‘24708‘
elapsed=‘0.99800‘>Server Context released.</Msg>
<Msg
time=‘2011-11-15T13:25:50‘
type=‘INFO3‘
code=‘4000‘
target=‘nmdis/topic_binhaishidi.MapServer‘
thread=‘22952‘>Container
6732
is
successfully
created on machine IBM3850X5.</Msg>
<Msg
time=‘2011-11-15T13:25:50‘
type=‘INFO3‘
code=‘4001‘
target=‘nmdis/topic_binhaishidi.MapServer‘ thread=‘22952‘>Thread 17336 is successfully created
on container 6732 of machine IBM3850X5.</Msg>
<Msg
time=‘2011-11-15T13:25:52‘
type=‘INFO3‘
code=‘10092‘
target=‘nmdis/topic_binhaishidi.MapServer‘
methodName=‘MapServer.MapReader
.Open‘
machine=‘IBM3850X5‘ process=‘6732‘ thread=‘17336‘>MapReader.Open has started.</Msg>
<Msg
time=‘2011-11-15T13:25:53‘
type=‘INFO3‘
code=‘10093‘
target=‘nmdis/topic_binhaishidi.MapServer‘
methodName=‘MapServer.MapReader
.Open‘
machine=‘IBM3850X5‘
process=‘6732‘
thread=‘17336‘
elapsed=‘0.73728‘>MapReader.Open
has
completed.</Msg>
<Msg
time=‘2011-11-15T13:25:53‘
type=‘ERROR‘
code=‘1016‘
target=‘nmdis/topic_binhaishidi.MapServer‘
machine=‘IBM3850X5‘
thread=‘22952‘
elapsed=‘3.05800‘>Server Object instance creation failed on machine IBM3850X5. </Msg>
<Msg
time=‘2011-11-15T13:25:53‘
type=‘INFO3‘
code=‘4002‘
target=‘nmdis/topic_binhaishidi.MapServer‘
thread=‘22952‘>Container
6732
of
machine
IBM3850X5 is removed.</Msg>
<Msg
time=‘2011-11-15T13:25:53‘
type=‘INFO3‘
code=‘4003‘
target=‘nmdis/topic_binhaishidi.MapServer‘
thread=‘22952‘>Thread
17336
removed
from
process 6732 of machine IBM3850X5.</Msg>
<Msg
time=‘2011-11-15T13:25:53‘
type=‘ERROR‘
code=‘1008‘
target=‘nmdis/topic_binhaishidi.MapServer‘
thread=‘25292‘>Configuration
nmdis/topic_binhaishidi.MapServer can not be started.</Msg>
<Msg
time=‘2011-11-15T13:25:53‘
type=‘INFO3‘
code=‘4006‘
target=‘CFH.ConfigurationFactoryHost‘
machine=‘IBM3850X5‘
thread=‘22812‘
elapsed=‘0.00000‘>Server Context created.</Msg>
<Msg
time=‘2011-11-15T13:25:53‘
type=‘INFO3‘
code=‘4007‘
target=‘CFH.ConfigurationFactoryHost‘
machine=‘IBM3850X5‘
thread=‘24536‘
elapsed=‘0.01600‘>Server Context released.</Msg>
<Msg
time=‘2011-11-15T13:26:23‘
type=‘INFO1‘
code=‘2033‘
target=‘CFH.ConfigurationFactoryHost‘
thread=‘25236‘>The
Server
Object
instance
is
shutting
down because the Idle Timeout Interval has elapsed</Msg>
<Msg
time=‘2011-11-15T13:26:23‘
type=‘INFO3‘
code=‘4002‘
target=‘CFH.ConfigurationFactoryHost‘ thread=‘25236‘>Container 5296 of machine IBM3850X5 is
removed.</Msg>
<Msg
time=‘2011-11-15T13:26:23‘
type=‘INFO3‘
code=‘4003‘
target=‘CFH.ConfigurationFactoryHost‘
thread=‘25236‘>Thread
18088
removed
from
process
5296 of machine IBM3850X5.</Msg>
2
问题分析
2.1
软件环境
环境如下:
Windows Server 2008 R2
操作系统(自带
IIS 7.5
)
,
ArcGIS Server 10.0 .NET
版本。
2.2
原因猜测
根据以往经验,猜测可能有以下原因。
2.2.1
许可过期
这个原因最先被排除,因为客户已经购买了永久的正式许可。况且,影像服务和
GP
服务都
可以发布。
2.2.2
内存不足
测试的机器上有
8GB
内存,服务发布失败时,内存占用只有
50%
,所以,基本排除内存不
足的可能。
2.2.3
安全限制
这个可能性较大,比如防火墙,数据访问权限等。
于是首先检查了防火墙,已经全部关闭,排除该可能。
然后对数据权限进行检查:
确保当前
ArcGIS
Server
账户(已经集成到
Administrator
)对测试用的
Shapefile
文件夹及
Shapefile
文件具有读写权限,经测试依然存在同样的问题;
将
Shapefile
数据导入
File
Geodatabase
中,确保用户对
File
Geodatabase
的访问权限,经测
试依然存在同样的问题;
将
Shapefile
数据导入
ArcSDE
,经测试依然存在同样的问题;
经过上面的测试,也基本排除了权限不足的可能性。
2.2.4
数据错误
这个可能性也比较大,于是对数据进行测试。
从之前成功发布,
并且现在正常运行的服务数据源中拿出几个图层来测试,
发现依然存在同
样的问题;
完全创建一个新的
Shapefile
,编辑添加最简单的图形,依然存在同样的问题;
对发布失败的地图文档进行优化分析,
没有任何错误和警告,
保存为
msd
文档再进行发布,
依然存在同样的问题;
经过上面的测试,也基本排除了数据错误的可能性。
3
问题解决
3.1
问题定位
经过上面的分析,确认许可正确,内存足够,权限正确,数据正确,并且影像服务、
GP
服
务都可以发布,因此最大的可能性,应该是地图服务相关的配置信息出了问题。
而我在发布地图服务的时候,
除了指定服务名称,
其他属性完全使用了默认的配置信息,
因
此推断,应该是默认的配置信息除了问题。
但是以前发布的服务都是采用的默认配置,
为何就没有问题呢?于是将新发布的服务属性与
正在运行的服务属性进行一一对比,发现了问题,原有服务的输出目录为
None
,图片返回
类型为
MIME only
,如下图:
而新发布的服务,输出目录已经指定,虚拟目录为空,但是图片返回类型却是
MIME+URL
的方式!如下图所示:
到这里,终于找到了问题的所在,于是开始验证:
将输出目录改为
None
,图形返回类型自动变为
MIME
only
,再启动服务,成功!再发布新
的地图服务,成功!
这是权宜之计,还是使用正确的虚拟目录更好一些,于是下面就重新设置正确的虚拟目录。
3.2
更改目录
在
ArcCatalog
或者
ArcMap
的
Catalog
面板中,
找到
GIS
服务器连接,
然后在服务器上右键—
—服务器属性,打开“目录”标签页,如下图所示:
果不其然,虚拟目录是空的。点击编辑按钮,为该目录指定虚拟目录,如下图所示:
输入的虚拟路径应该是在
Web
服务器上真实存在的,如下图在
IIS
中:
依次为缓存目录、
输入目录、
输出目录、
工作目录和索引目录指定虚拟路径,
然后关闭服务
器属性对话框。
再对地图服务属性进行修改,将输出目录指定为本机
arcgisserver
下的
arcgisoutput
,此时虚
拟路径就自动填充为刚才指定的路径,图片返回方式也自动调整为
MIME+URL
方式,重启
服务,成功!
4
小结
其实问题并不是很复杂,
但是造成问题的原因有很多,
需要我们冷静地一一分析排除,
直到
找出最后的真凶。
解决问题的思路,
应当是首先根据自己或别人的经验,
将可能的原因一一列出,
然后逐个分
析和测试,
多借助各类工具,
如日志、
网络分析工具等等。
当你把可能的原因一一排除的时
候,真相也就很快会浮出水面。
到这里,
问题终于已经解决了,
之前我也从网上查了一些资料,
也问题了很多人,
答案都是
五花八门的,
但没有与我遇到的情况一样的,
所以特意将这种情况记录下来,
希望将来有人
遇到同样问题时,能有一个参考