检索 COM 类工厂中 CLSID{}组件失败,错误:80070005,请问怎么解决

Xiaoyi2122 2018-11-16 10:15:11
System.Web.HttpUnhandledException: 引发类型为“System.Web.HttpUnhandledException”的异常。 ---> System.UnauthorizedAccessException: 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。
在 SalaryAdmin_SalaryCalc.ExportToExcel()
在 SalaryAdmin_SalaryCalc.btnAdd_Month_Singal_Click(Object sender, EventArgs e)
在 System.Web.UI.WebControls.Button.OnClick(EventArgs e)
在 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
在 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
在 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
--- 内部异常堆栈跟踪的结尾 ---
在 System.Web.UI.Page.HandleError(Exception e)
在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
在 System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
在 System.Web.UI.Page.ProcessRequest()
在 System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
在 System.Web.UI.Page.ProcessRequest(HttpContext context)
在 ASP.salaryadmin_salarycalc_aspx.ProcessRequest(HttpContext context) 位置 c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\c9f7b7be\6a6f771f\App_Web_amabugih.8.cs:行号 0
在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
在 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)


************
在网上搜寻到的解决办法设置组件服务中的安全权限,都试过还是出现这个错误,请问大家有好的解决方法吗?
...全文
411 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你可以把 NETWORK SERVICE 换成 Everyone 试试。 不过根本的办法,是在这类服务器端程序中不要使用用户态代码。这类代码,可以使用一个 Winform 或者 Console 方式编写,然后远程登录到服务器上,启动程序,再以“锁定”方式(而不是“注销”方式)退出。这样保证服务器端总是运行这样一个用户态下的程序。然后你的 asp.net 程序跟这个用户程序跨进程本机通讯,例如 udp、tcp、http 都可以。
Xiaoyi2122 2018-11-16
  • 打赏
  • 举报
回复
网络别人提供的解决方案,全都试了还是不行。
-----------------------------------分界线---------------------------------------
解决方案:

  1、运行dcomcnfg.exe打开组件服务;

  2、依次展开"组件服务"->"计算机"->"我的电脑"->"DCOM配置"->"Microsoft Word 文档"

    

  3、右键打开“属性”对话框,点击“标识”选项卡,选择交互式用户;点击“安全”选项卡,“启动和激活权限”、“访问权限”选择自定义

    

  4、编辑启动和激活权限权限的自定义选项,将NETWORK SERVICE(也有说法需要IIS_IUSERS和everyone用户)添加进去,给与本地激活和远程激活的权限,访问权限相同

    

  5、或许设置完以上代码就可以正常运行,但是我的代码还是抛出错误,这里再配置web.config的<identity impersonate="true" userName="用户名" password="密码"/>,将其放到<system.web>节点下面即可,代码就可以正常运行了
Xiaoyi2122 2018-11-16
  • 打赏
  • 举报
回复
操作office是基于其他功能的结果输出,不适合拆分,用起来不方便。
  • 打赏
  • 举报
回复
软件开发,本来就是要能够开发网络软件,一个进程调用另外一个进程(何况是本地 localhost 的)的过程,把一个程序的功能分解为A、B两个程序并且A调用B,这其实是很简单很基本的知识。我们现在对于 c# 程序员的要求都是以开发分布式的(自动负载均衡的)为基本知识。只会写个单机小程序不行啊。
  • 打赏
  • 举报
回复
引用 4 楼 zhangxiao0122 的回复:
你说的那种方式我暂时不理解怎么使用实现。 安全权限的账户设置网络提到的都设置了,未见起用。
程序里边一个过程调用另一个过程你会实现,而进程里边调用另外一个进程的过程,你不会实现?
Xiaoyi2122 2018-11-16
  • 打赏
  • 举报
回复
你说的那种方式我暂时不理解怎么使用实现。 安全权限的账户设置网络提到的都设置了,未见起用。
  • 打赏
  • 举报
回复
你在网上可以说会找到几十、上百种说法。上面的其实是根本性的解决方法,根本不需要修改配置一大堆安全参数(这有风险)。因为那类程序本来就应该将和心态和用户态的部分区分开。 我不知道为什么微软那么懒惰、不能将 Office 中的一部分常用功能自动放到和心态,而一部分危险功能自动放到用户态。因为许许多多商家都需要在服务器端处理Office文档,微软显然是没有一个架构式。

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧