问题描述
实现按模版导出,使用Office组件,部署后无法导出
主要引用
Microsoft.Office.Interop.Word 12.0.0.0
实际环境
Windows 2008 + iis7 + word 2007
主要异常
无法操作word
无法创建word
System.Runtime.InteropServices.COMException(0x800A13E9): Word 出现问题
System.Runtime.InteropServices.COMException(0x800A107A): 类型不匹配
问题判断
因在其他机器上部署均正常访问,判断异常原因为权限问题,windows 2008权限要求比较高,不断尝试权限修改方式。
解决方法
方法1.修改web.config
在 web.config 文件中 system.web 标签之后加入
<identity impersonate="true"userName="本机用户名" password="本机密码 "/>
方法2.修改文件夹权限
将系统中生成 word 对应文件夹赋权,iis用户赋全部操作权限(NETWORK SERVICE、IIS_IUSRS)。
方法3.添加目录
C:/Windows/System32/config/systemprofile
C:/Windows/SysWOW64/config/systemprofile
目录下创建名为Desktop目录。
方法4.修改组件服务
- 在运行中输入 dcomcnfg.exe
- 查看组件服务——》计算机——》我的电脑——》DCOM配置——》Microsoft Office Word 2003-2007文档或word应用程序
- 右键单击选择属性
- 弹出属性对话框选择标示选项卡选择交互式用户
- 选择安全选项卡启动和激活权限选择自定义
- 点击编辑按钮添加 USERS用户组 并添加 IUSR_机器名用户
- 再选择安全选项卡访问权限选择自定义
- 点击编辑按钮添加 USERS 用户组并添加 IUSR_机器名用户
注:上一步中有可能在DCOM配置中找不到 Microsoft Office Word 2003-2007文档或应用程序。由于 windows2008 是64位的原因需要在运行中输入 mmc-32 回车。进入组件服务控制台,选择文件菜单单击添加/删除管理单元,添加组件服务保存控制台1即可。
建议每修改均测试下功能是否能正常使用,若全部方法均修改后还是无法使用,条件允许的情况下建议重装系统。