SOE 部署错误 ClassFactory cannot supply requested class问题及解决方案
一、问题描述
虽然SOE开发已经老早出来了(ArcGIS 10.1 不再支持DCOM开发,所以以往的基于AO+WebService需要转变思路),不过由于跟工作关联性不是很大,一直未系统学习过。网上下了不少资料,计划系统的学习下。由于想搞明白整个使用流程,就先用自带的模板('hello word')创建了个REST的SOE,编译生成.soe文件。
在ArcGIS Server上进行扩展,并基于MapServer进行发布。启动服务时,报错如下:
网上的解决办法都是说没有安装.net扩展(而且到处都是这样的解决办法)。。。我明显安装了的。。。实在无语,网上搜了半天都找不到。无奈之下,乖乖的把相关资料系统的看了下,终于找到解决问题的办法了(下面的C),做个分享。
二、解决方案
针对我遇到的这个问题,可以从以下三方面排查:
A、.net 扩展支持(我基于.net开发的)
.net soe 中,原因是在安装ArcGIS server 时候没有启用.net 扩展支持。
B、sdk版本检查
soe的开采用的arcobjects sdk发版本和部署机器上所拥有的arcobjects sdk的版本不对,如soe开发采用的是arcobjects sdk for .net 10.2而部署在10.1server的机器上,该机器上只有arcobjects sdk for .net 10.1,同样会出现上面的错误。
C、是否兼容了64位检查(也是我这边之前没注意,死活找不到原因的地方)
我之前选择的是X86编译,按照官方要求编译项需要兼容64位!!! 后来,我改成AnyCPU,编译.soe文件后,重新搞一遍,一切OK!!!