使用CLSID {000209FF-0000-0000-C000-000000000046}检索组件的COM类工厂

时间:2012-12-15 09:10:57

标签: iis windows-xp asp.net-4.0 iis-5

我使用Windows XP_SP_3和IIS 5(本地主机),使用asp.net4构建网站并使用此代码:

Application appClass = new Application();
Document wordDoc = appClass.Documents.Add(Server.MapPath("~") + @"Files\tmp.docx");
wordDoc.SaveAs(@"e:\hp\Files\" + TextBox1.Text + ".docx");
wordDoc.Close();

如果使用VS2010运行网站,则可以。但如果使用IIS 5(本地主机)运行,请显示以下错误:

  

检索具有CLSID {000209FF-0000-0000-C000-000000000046}的组件的COM类工厂因以下错误而失败:80070005访问被拒绝。 (来自HRESULT的异常:0x80070005(E_ACCESSDENIED))。

     

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

     

异常详细信息:System.UnauthorizedAccessException:由于以下错误,检索具有CLSID {000209FF-0000-0000-C000-000000000046}的组件的COM类工厂失败:80070005拒绝访问。 (来自HRESULT的异常:0x80070005(E_ACCESSDENIED))。

     

ASP.NET无权访问所请求的资源。考虑将资源的访问权限授予ASP.NET请求标识。 ASP.NET具有基本进程标识(IIS 5上通常为{MACHINE} \ ASPNET,IIS 6和IIS 7上为网络服务,IIS 7.5上已配置的应用程序池标识),如果应用程序未模拟,则使用该标识。如果应用程序模拟通过,则标识将是匿名用户(通常为IUSR_MACHINENAME)或经过身份验证的请求用户。

     

要授予对文件的ASP.NET访问权限,请在资源管理器中右键单击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”以添加适当的用户或组。突出显示ASP.NET帐户,并选中所需访问的框。

     

来源错误:

     

在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。


我打开组件服务>计算机>右键单击“我的电脑”>选择属性> COM Sucrity>启动和激活...>编辑默认值>添加>高级>

我找不到用户IIS(IIS_IUSRS)。所以选择ASP.NET并确定并选中Local Launch&远程启动&本地激活&远程激活。

休息系统并再次使用iis5运行站点。但是再次显示错误!

2 个答案:

答案 0 :(得分:5)

  1. 转到控制面板 - >管理工具 - >零件 服务
  2. 点击“组件服务” - >“展开树”。 计算机 - >我的电脑 - > DCOM配置
  3. 搜索CLSId 00020906-0000-0000-C000-000000000046 (适用于单词申请) 注意:如果未找到“搜索CLSId”,则按“" Windows Word应用程序"”进行搜索。
  4. 选择 00020906-0000-0000-C000-000000000046 此CLSId现在右键单击属性
  5. 在Propeties区域中,单击Security TAB。
  6. 从所有选项中选择自定义选项(启动和激活 权限,访问权限,配置权限)。
  7. 全部添加新名称NETWORK SERVICE,并允许所有权限 这个名字。
  8. 转到相同属性区域中的Identity TAB,然后选择 选项作为此用户,然后添加用户名(即 这台机器的管理员)和密码。点击Apply,Ok。
  9. 刷新组件服务并检查您的应用程序是否正常运行 罚款与否。

答案 1 :(得分:1)

启动Internet信息服务(IIS)。 右键单击应用程序的虚拟目录,然后单击“属性”。 单击目录安全性选项卡。 在“匿名访问和身份验证控制”下,单击“编辑” 确保未选中“匿名访问”复选框,并且“集成Windows身份验证”是唯一选中的复选框。 配置ASP.NET以通过模拟使用Windows身份验证,请使用以下配置

...
<authentication mode="Windows"/>
<identity impersonate="true"/>
...