我在实现Word导出功能时使用了Office2007,在公司的电脑上运行没问题。由于需要向客户演示所以我要在本地搭一套环境,于是出现了“检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 80070005 拒绝访问。”这个错误,经过一番折腾终于解决了,主要分为4步,下边一一说来。
一、Word导出引发的错误
1、开始->运行->dcomcnfg.exe,启动“组件服务”
2、组件服务->计算机->我的电脑->DCOM配置
3、找到“Microsoft Word文档”->右击->属性,Office版本不同名称可能不同,我安装的是Office2007名称是“Microsoft Word 6.0-7.0 文档”
4、点击“标识”,选择“交互式用户”
5、点击“安全”->启动和激活权限选择“自定义”->编辑->添加->高级->立即查找->选择Everyone、IIS_USRS、NETWORK SERVICE->点击确定->勾选所有权限
6、访问权限选择“自定义”->编辑->添加->高级->立即查找->选择Everyone、IIS_USRS、NETWORK SERVICE->点击确定->勾选所有权限
7、配置权限选择“自定义”->编辑->添加->高级->立即查找->选择Everyone、IIS_USRS、NETWORK SERVICE->点击确定->勾选所有权限
这时候刷新网页,一般就没问题了。
二、找不到“Microsoft Word文档”
有些人通过运行dcomcnfg.exe打开服务器组件后找不到“Microsoft Word文档”,这主要在64位系统中出现。原因是dcomcnfg.exe打开的组件服务只显示64位的组件,而你安装的Office是32位的,所以这样是看不到的。
解决方法是:开始->运行->dcomcnfg.exe -32,启动“组件服务”
三、一、二步之后还是报错
如果经过第一步、第二步之后仍不能解决问题,就应该是权限的问题,可以在web.config中使用身份模拟。
具体方法:在< system.web>节中添加< identity impersonate=”true” userName=”Guo” password=”balabala”/>
四、三步之后还是不行
内心要崩溃了吗? 如果报错内容如下:无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。此操作失败的原因是对 IID 为“{00020970-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 库没有注册。 (异常来自 HRESULT:0x8002801D (TYPE_E_LIBNOTREGISTERED))。 那你就要检查下电脑中是不是装了WPS,这可能是WPS组件跟Office组件冲突了,把WPS卸载了再试试看! 如果这样还不行,那我只剩最后一招:卸载WPS&重新安装Office。 如果连最后一招都不奏效,那你就另请高明吧,我伺候不了了。