我在Visual Studio 2008中遇到了C#ASP .NET项目的问题 当我使用Windows 7 Ultimate(x64)重新安装计算机时,此问题就开始了。对此我也使用Office 2007.
我收到的错误消息是:
System.UnauthorizedAccessException:由于以下错误,检索具有CLSID {000209FF-0000-0000-C000-000000000046}的组件的COM类工厂失败:80070005。 at xxx.Utility.WordDocument..ctor(String filePath,HttpServerUtility util) at customer_communication.BuCreate_click(Object sender,EventArgs e)位于c:\ xxx \ Website \ customer \ communication.aspx.cs:第127行
答案 0 :(得分:31)
以下是我对此问题的解决方法:
我正在使用Win 7 64位和Office 2007
运行程序“ dcomcnfg -32 ”。 (如果它在64位下运行,你就找不到单词和excel组件)
转到“控制台根目录/组件服务/计算机/我的电脑/ DCOM配置/” 查找Microsoft Word和Excel并选择属性。
转到安全性并选择“配置权限”下的“自定义”。(如果需要,您可能也想更改其他权限,但我不需要) 添加“IIS_IUSRS”并将其命名为“完全控制”。
现在转到“身份”并选择“交互式用户”。
完成后不要忘记按“确定”。 :d
我希望这可以帮助您解决问题以及其他来到这里并阅读此内容的人。
答案 1 :(得分:8)
您应该为ASP.NET进程标识(IIS 5上的{MACHINE} \ ASPNET或IIS 6上的网络服务)授予对Word COM组件的访问权限:
“控制面板 - 管理工具 - 组件服务 - 计算机 - 我的电脑 - DCOM配置”
找出“Microsoft Word文档”,右键单击 - 设置 - 安全选项卡,为ASP.NET进程标识授予访问权限(本地和远程)(IIS 5的“ASPNET”,“网络服务”) “对于IIS 6)。
如果那时你得到一个“System.Runtime.InteropServices.COMException(0x800A13E9):内存不足。立即保存文件。”打开/添加文档(我自己的expirience)时出现异常,只需删除%Temp%和\ Content.Word文件夹中的临时文件。
答案 2 :(得分:5)
这个对我来说很难搞清楚,也许我的Windows mojo技能只是低于标准杆。但我无法在Windows Server 2008上以32位模式运行组件服务。希望这可以帮助其他人解决同样的问题:
编辑:为了完整起见,为了让Word Interop在Windows Server 2008上工作,我还必须按照this answer中的说明创建Desktop文件夹。
答案 3 :(得分:5)
启动dcomcnfg -32
或dcomcnfg /32
都无法在列表中显示目标应用(Microsoft Excel)。
但我遵循指示@ How to make IIS7 play nice with Office Interop,特别是有关启动mmc -32
并手动添加“组件服务”管理单元的说明,我能够将其显示出来。 (注意:虽然该链接谈到IIS7,但我的问题是Windows服务)。
答案 4 :(得分:5)
这对我有用:
答案 5 :(得分:2)
修复Tomas的答案,Windows Server 2k8 x64上的正确命令是:“dcomcnfg / 32”(斜杠而不是 - )
此外,我必须通过添加具有午餐和激活权限,访问权限和配置权限的完全权限的IIS_IUSRS来自定义所有安全选项。还有“身份”选项卡中的交互式用户。然后它对我有用。
我在使用Word 2010打开doc文件时出现此问题,我必须将其设置为Microsoft Word 97-2003文档属性。
答案 6 :(得分:1)
此错误对应于.NET System.UnauthorizedAccessException,通常是由您的代码尝试创建的COM组件访问的错误设置引起的。
您可以尝试启动dcomcnfg实用程序,转到DCOM设置,选择所需对象并允许对运行ASP.NET代码的帐户进行访问。它应该可以解决你的问题。
答案 7 :(得分:0)
我遇到了同样的问题,最后是因为我的用户没有权限运行“远程过程调用(RPC)”服务。 在控制面板,管理工具中,我查找了该服务,在登录中我单击了“本地系统帐户”,我重新启动了系统并解决了问题。
答案 8 :(得分:0)
我测试了所有上述方法,这些方法也标记为答案,但在用户未处于活动状态或注销时在Windows服务器中,获取访问异常。这样:
office将使用您在第一步中创建的用户的设置运行,因此如果您使用此用户更改任何设置。 120%没有问题。尝试了3个不同的服务器。
答案 9 :(得分:0)
转到注册表HKCR>TypeLib>{00020905-0000-0000-C000-000000000046}>8.7>0
,然后删除文件夹“ win32 ”,这是由于Word COM类错误引起的。
转到注册表HKCR>TypeLib>{00020813-0000-0000-C000-000000000046}>1.9>0
,然后删除文件夹“ win32 ”,这是因为Excel COM类错误。
尝试那种方法解决我的问题。
答案 10 :(得分:0)
我创建了文件夹C:\ Windows \ System32 \ config \ systemprofile \ desktop,解决了我的服务无法打开Excel文件的问题。