Administrator
发布于 2021-01-04 / 1633 阅读 / 0 评论 / 0 点赞

ASP.NET的web程序无法打开系统exe应用的问题-配置DCOM

ASP.NET的web程序无法打开系统exe应用的问题-配置DCOM

场景问题描述:在开发c#的ASP.NET的webapi的时候,有用到调用系统安装的应用exe的场景(可以当做调用excel吧), 在本地VS2019开发调用时完全无问题,但是发包IIS调用却始终不出来软件。

  • 解决方案:将需要调用的exe应用的DCOM的标识配置成交互式用户

1、打开组建服务管理窗口

  • 打开运行,输入dcomcnfg
    image-20210104102326880

  • 依次打开组件服务-》计算机-》我的电脑-》DCom配置-》找到XXXXX Application(也有可能叫XXXX Assembly Document)

  • 如果在其中找不到则是因为操作系统为64位,而应用程序是32位组件,需要在运行栏中输入命名:comexp.msc -32 来打开32位的组件服务。

2、配置XXXX Application属性

  • 右击XXXX Application打开属性对话框,点击"标识"标签,选择"交互式用户
    image-20210104102714042

  • 点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加一个"NETWORK SERVICE"和"IIS_IUSRS"用户(注意要选择本计算机名,我的是xxxxx/IIS_IUSRS,就是iis服务器创建的用户),并给它赋予"本地启动"和"本地激活"权限。

  • 依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK SERVICE"用户,然后赋予"本地访问"权限。

image-20210104102906527
image-20210104102844858

  • 光按以上设置并不能完全保证不出问题,因为调用OFFICE的操作可能涉及其他的系统资源,很可能依然权限不够而导致问题,只是设置EXCEL应用程序后,还是可能会报80070005的错误,最保险的是应该在dcomcnfg中选中我的电脑然后右键属性->com安全,将里面的访问权限,启动和激活权限全都编辑默认,在当中加上network service(iis 5.0的话,要加的是asp.net用户),并如前面对networkservice设置上相同的权限,这样基本上能保证不会再出什么问题。

3、配置Web.config(这一步可以先不做,是最差情况解决方案)

如果上述方法不能解决问题,就应该是权限问题,请尝试用下面的方法:

在web.config中使用身份模拟,在<system.web>节中加入

<identity impersonate="true" userName="你的用户名" password="密码"/>

评论