易腾动力社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11209|回复: 0
打印 上一主题 下一主题

.NET操作WORD经验之谈

[复制链接]
跳转到指定楼层
楼主
发表于 2014-8-16 11:58:37 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 小林飞刀 于 2014-8-16 13:28 编辑

问题阐述:exam.gopep.cn上传DOC文件后,执行生成图片时报错,所有生成出来的图片只有一个字母“C”。
摘要:上传DOC文件后,执行生成图片时报错,Dcom权限问题,解决WORD生成不了PIC全过程
解决过程:
1. 首先以为是文档标签排序弄错,认真检查之下,确认文档正确。
2. 于是开始怀疑程序问题,找到generate.gopep.cn的PHP端开始从头寻找根源。依次把调取exe的参数一一打印出来,没发现任何问题,PHP端也暂时正常。
3. 接下来,就只有exe程序了,打开exe历史文档一看,程序执行完会正确,只是记录的图片高度只有“196px”,也就是只有一行文字“C”的高度,显然,生成PIC时,数据出错。
4. 于是,开始调试.NET程序。打开CMD窗口,直接执行生成PIC,居然没报错,去历史记录查看,一切正常,图片高度是“975px”,再回到WEB端,看了刚刚生成出来的图片,也正常打印出来了。这样一来,是不是也说明.NET本身也没问题。
5. 归因于此,PHP端调用参数正常,而.NET端自身也没问题。到此为止,问题变得有点意思了。两方都没问题,只能是两者发生握手时脱节。考虑到PHP与EXE之间有数据通过Redis传递,于是清空一下缓存,重启服务器。
6. 重新回到WEB端测试,问题变得更有意思了,调用EXE直接返回“-2”(注:-2代表‘初始化环境出错’),现在问题更严重,.NET初始化DOC文档时报错。
7. 再次回到.NET做调试。打开CMD窗口,直接执行生成PIC,居然一路下来没报错,去历史记录查看,一切正常,.Net本身还是没问题。图片也正常生成了出来。
8. EXE直接执行正常,WEB端报-2,还是回到“握手”问题上,想到了两运行时使用的身份不同(注:cmd用Administrator身份,而WEB端用System身份),开始怀疑权限问题。Cmd权限正常,只有web端,于是到PHP端去对远程地址写文件,也正常,证明读写正常。
9. 考虑到Microsoft对DCOM组件调用的配置有特殊要求,于是,初步确定是DCOM组件权限问题,首先在.NET里把初始化时的报错catch出来,报错信息为:
System.Runtime.InteropServices.COMException(0x8000401A): Retrieving the COM class factory for component with CLSID{000209FF-0000-0000-C000-000000000046} failed due to the following error:8000401a 因为配置类型不正确,系统无法开始服务器进程。请检查用户名和密码。(Exception from HRESULT: 0x8000401A).
atModifyQuestion.WordPro.get_WordApp() in D:\projects\ModifyQuestion\GenerateExamQuestion\WordPro.cs:line105
atModifyQuestion.WordPro.OpenDoc(String path) inD:\projects\ModifyQuestion\GenerateExamQuestion\WordPro.cs:line 128
atModifyQuestion.WordPro.InitDoc(String docPath) inD:\projects\ModifyQuestion\GenerateExamQuestion\WordPro.cs:line 561
atModifyQuestion.WordPro.ProcessDoc(String questionId, Boolean isDebug) inD:\projects\ModifyQuestion\GenerateExamQuestion\WordPro.cs:line 212
10. 问题显面易见了,直接进入“控制面板->管理工具->组件服务”依次打开“组件服务->计算机->我的电脑->DCOM配置”,找到“Microsoft Office Word 97 - 2003 文档”,右键“属性”,打开“标识”选项卡,选中“启动用户”,如图

打开“安全”选项卡,访问权限里选中“自定义”,编辑,对“SYSTEM”启动“本地访问,远程访问”,如图

确定保存。
11.  问题终于迎刃而解。


特别鸣谢:张凯宇(支持),丘文标(指导)
----Janku
2014/8/16

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|易腾动力 ( 粤ICP备12094338号 )

GMT+8, 2025-5-4 19:53 , Processed in 0.052361 second(s), 20 queries .

Powered by Discuz! X3

© 2001-2024 Yidz Inc.

快速回复 返回顶部 返回列表