公司的项目中需要抽取Word文件的正文,在最初的开发过程中,我使用的是微软的Office组件来抽取Word文本内容。这种方法对于普通的WORD文档简便易行,网上也有很多现成的Word操作类可供使用,但对于包含宏脚本的Word文件,这种方法就无能为力了,尤其是对于那些错误的(个人认为是宏病毒)脚本,更显得苍白无力,在使用COM组件打开文档时就弹出了错误提示。正在无奈之时,想到了曾经用过的WPS也能处理Word文档,测试后效果很好,所有文档几乎都能顺利抽取(个人版本的WPS不含宏操作功能,有时候东西越简单可能越好用,支持国货!!!)。
WinForm版本的程序在这种情形下运行正常,但嵌入到WebService以后,调试状态下一切正常,一部署到IIS程序就异常了,Word文本依然抽取不了。无奈,只得挨行打LOG,最终发现在IIS下部署的网站,连WPS应用的操作类都无法实例化。在网上百度一番,有同仁提到是DCOM组件权限的问题,于是试了一把,在DCOM的安全性中赋予Everyone最大权限后,一切正常。具体的设置步骤如下:
1.打开运行,输入dcomcnfg
2.在组件服务窗口中,按 控制台根结点—>计算机—>我的电脑—>DCOM配置—>Kingsoft Writer Application Class(COM组件名称) 找到你使用的COM组件
3.右键点击COM组件,选择属性,点击安全选项卡。对下面的所有项目,都选择自定义,并点击编辑按钮,添加Everyoney用户并将权限赋予到最大。
4.设置完成,重新运行网站项目,WebService此时便可以正常使用COM组件。
此处将Everyone的权限赋予此COM组件,是否恰当,如果哪位仁兄找到了使用COM组件的最小权限集合,劳驾留言告知一下。