图文讲解NTFS和FAT32硬盘下 asp.net 生成word 错误: 80070005 和 错误:8000401a 的解决方法
公司要实现用asp.net/c#来调用word模板,连接数据库来替换模板中的标记,在本机运行调试正常,上传到服务器之后报错
本机环境配置为vs2008+office2003, C盘NTFS,word安装在D盘(FAT32),网站运行所在盘也为FAT32
服务器环境配置vs2008+office2003, 所有盘都为NTFS
FAT32和NTFS的最大不同就是安全机制,所以在本地FAT32运行很好的程序在服务器NTFS上面就是跑不起来,下面的解决方法是针对所有盘都是NTFS来解决的
在NTFS下面的报错信息
检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。
源错误:
行 42: } 行 43: 行 44: WordApp = new Word.ApplicationClass(); 行 45: WordDoc = new Word.DocumentClass(); 行 46:
另外还会报一个8000401a的错误.在经历过无数次重装服务器后,找到了一个解决方法,下面的解决方法可以完全解决上面的80070005和8000401a错误:运行dcomcnfg或者打开控制面板-》管理工具-》组件服务-》计算机-》我的电脑-》DCom配置-》找到Microsoft Word文档之后,单击属性打开此应用程序的属性对话框单击标识选项卡,然后选择下列用户,输入管理员账号和密码单击"安全"选项卡,在"启动和激活权限"组中选中"自定义",然后 自定义->编辑->添加ASP.NET账户和IUSER_计算机名(这个其实就是inter的来宾账户),INTERACTIVE,NETWORK SERVICE.其中前面3个的权限全选,后面的NETWORK SERVICE只用勾选本地启动。
然后在 "访问权限" 组中选择自定义,分别添加 ASP.NET账户,IUSER_计算机名(这个其实就是inter的来宾账户),NETWORK SERVICE,将他们的本地访问和远程访问权限都设置为允许
最后,在web.config的<system.web>中加入
<identity impersonate="true" userName="administrator" password="您的密码"/>
另外:这样的解决方法,只能说能解决,但是算不上完美,因为在web.config中加入管理员账号和密码肯定不是很好。我在本机运行的时候,电脑除了C盘是NTFS,其他盘都是FAT32,我的WORD也是安装到了FAT32格式的D盘中,所以在本地测试的时候,设置比较简单就能使用asp.net调用word,下面是FAT32的情况下的DOCM截图
在标识中,选择交互式用户
在启动和激活权限中,我一共有8个用户,全部赋给了所有权限
在访问权限中,我一共有6个用户,除了最后面的 SYSTEM只有本地访问权限外,其他的账户权限都是本地访问+远程访问
配置权限我没有做修改,默认即可
这种word在FAT32,网站运行在FAT32的情况下,不用对web.config进行设置
如果各位朋友在使用中有问题,欢迎留言讨论