Windows XP部署的asmx Web Service调用报ClassFactory错误求解决方案
排查解决步骤
- 核对DLL路径与注册表配置一致性
仅跨机器导入CLSID注册表项失效的核心原因多为注册表对应CLSID下InprocServer32键值指向的DLL路径,与目标Windows XP服务器上实际存放DLL的路径不匹配。打开注册表编辑器定位到HKEY_CLASSES_ROOT\CLSID\<目标CLSID>\InprocServer32,核对默认键值的路径,确保DLL已存放至对应路径,且文件版本、完整性与源服务器完全一致。 - 通过官方工具重新注册COM组件
不推荐直接跨机器迁移COM注册表项,优先使用系统自带注册工具执行注册:
32位COM组件直接在cmd中执行:regsvr32 <DLL文件完整路径>
若返回注册成功,直接发起接口请求测试;若注册失败,先排查DLL依赖的VC运行库、其他关联组件是否已在WinXP系统安装,COM依赖项缺失会直接触发ClassFactory无法提供类的报错。 - 调整进程访问权限
WinXP自带IIS 5.1默认使用ASPNET账户运行asmx服务进程,需确保DLL文件、DLL所在目录已为ASPNET账户开放读取+执行权限,权限不足会导致COM类实例化失败。可临时为DLL所在目录添加Everyone读取执行权限做验证,验证通过后再收窄权限配置即可。 - 校验DCOM组件身份配置
运行输入dcomcnfg打开组件服务,找到目标COM组件后右键打开属性页,切换至安全标签,确认启动和激活权限、访问权限均已对IIS运行账户开放,身份标识选项可临时设置为「交互式用户」做验证,排除身份配置异常问题。
内容的提问来源于stack exchange,提问作者KA-Yasso
相关产品推荐
相关产品推荐

