在进行SOE扩展开发的过程中,经常会遇到添加SOE后宿主地图服务无法启动的问题,下面就对之前遇到的添加SOE后服务无法启动的几种可能原因及其解决方法总结一下,供大家参考:
一、问题描述:
部署完SOE,对某个服务启用部署的SOE时,出现如下错误信息:
service failed to start
xxxx.MapServer:
ClassFactory cannot supply requested class
问题原因:
原因是在安装ArcGIS Server的时候没有启用.Net的扩展支持。
解决办法:
修复ArcGIS Server,启用.Net扩展支持,同时注意要有对应的.Net Framework,如下图:
二、问题描述:
启用SOE时,遇到下面报错信息“Service failed to start”:
问题原因1:
开发用的SOE模板与部署机子上的Server版本不一致。比如用ArcObjects 10.3的SOE模板开发的程序部署在10.2上,尽管已经在10.2中重新编译了,但是没有用ArcObjects 10.2的SOE模板,则出现上图错误。
解决办法1:
在ArcObjects 10.2中新建SOE模板工程,把原有代码拷贝过来重新编译即可。
问题原因2:
.Net Framework版本不一致导致。比如SOE程序是用VS2010编译的,使用的.Net Framework版本为4.0,但是Server上只装了.Net Framework 3.5,导致服务无法启动。
解决办法2:
SOE程序使用.Net Framework 3.5重新编译或者Server机上安装.Net Framework 4.0即可。
问题原因3:
开发时程序的目标平台设置的x86,也会报这个错。
解决办法3:
将程序的目标平台改为x64或者AnyCPU重新编译即可。
以上都是指的.Net SOE开发中的常见问题,如果是在java版本中,通常是Java JDK版本的问题。比如在Java JDK 1.6下出错,但1.7下正常,这时要注意查看ArcObjects版本的系统需求,检查该JDK是否满足其支持的JDK版本。
参考链接:
https://www.cnblogs.com/myyouthlife/p/3284291.html