利用WORD里书签功能提取数据并存入数据库,引用了Microsoft.Office.Interop.Word.dll这个控件, 在服务器上部署时出现的问题.
检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005
解决方案: 配置 DCOM 中 word 应用程序:
在window server 2003下设置 Office 自动化服务器,请按照下列步骤操作:
1. 以管理员身份登录到计算机,安装Office2003。
2. 启动要自动运行的 Office 应用程序。这会强制该应用程序进行自我注册。
3. 单击开始,单击运行,然后键入 DCOMCNFG。选择要自动运行的应用程序。应用程序名称如下所示:
Microsoft Word 文档
单击属性打开此应用程序的属性对话框
4. 单击标识选项卡,然后选择交互式用户。
5. 在 DCOM 配置对话框中,单击默认安全性选项卡。
6. 单击"启动和激活权限"和访问权限的"自定义"。验证访问权限中是否列出下列用户,如果没有列出,
则添加这些用户:
SYSTEM
INTERACTIVE
Administrators
IUSR_<machinename>*
IWAM_<machinename>*
NETWORK SERVICE
后三个需要添加"本地激活"权限.
7. 单击确定关闭 DCOMCNFG。
1,增加虚拟权限:
在web.config里面增加
<identity impersonate="true" userName="windowsloginid" password="password"/>的键值;要求windowsloginid具有管理员权限,这种方案使用后确实可行,可是不利于部署, 因为有经验的人都知道把一个最高权限的服务器帐号密码公开显示在配置文件上有什么后果。所以这种方案不可行。那么就牵涉到第二种方案。
2,增加Com组件的交互式访问权限:
这也是网上搜索率最高的一种方式,运行“DCOMCNFG”,找到
Microsoft Excel 97/2000/2002 - Microsoft Excel 应用程序
Microsoft Word 2000/2002 - Microsoft Word 文档 这些组件的交互式访问权限,详情可以参见:
http://support.microsoft.com/kb/288366
这种方案应该是可行的,可是我在我自己的机器上一级服务器上试验过很多遍都不行,最后我试着用特定的用户来访问,如果细分的话,这里可以算为第三种解决方案了^_^
3,增加Com组件特定用户的访问权限。
这才是我今天说的重点,也是帮我解决了实际难题的一重解决方案,简略的说可以这么做:
建立一个所需的帐号(例如test),权限为Power User或者User;
用此帐号运行一次word或者excel(确保有访问权限);
运行DCOMCNFG,在Dcom组件里面找到Microsoft Excel 应用程序或者Microsoft Word 文档(和前面一样)-属性-标识里面选择“特定用户”,然后输入前面建立的帐号和密码就可以了
解决方案参考:
1.
http://www.cnblogs.com/HQT/archive/2006/05/22/406345.html
2.
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;288366
3.
http://blog.crowe.co.nz/archive/2006/03/02/589.aspx
4.
http://blog.csdn.net/tz_xiong/archive/2007/08/23/1756670.aspx