ASP.NET的web程序无法打开系统exe应用的问题-配置DCOM
场景问题描述:在开发c#的ASP.NET的webapi的时候,有用到调用系统安装的应用exe的场景(可以当做调用excel吧), 在本地VS2019开发调用时完全无问题,但是发包IIS调用却始终不出来软件。
- 解决方案:将需要调用的exe应用的DCOM的标识配置成交互式用户
1、打开组建服务管理窗口
-
打开运行,输入
dcomcnfg
-
依次打开组件服务-》计算机-》我的电脑-》DCom配置-》找到XXXXX Application(也有可能叫XXXX Assembly Document)
-
如果在其中找不到则是因为操作系统为64位,而应用程序是32位组件,需要在运行栏中输入命名:comexp.msc -32 来打开32位的组件服务。
2、配置XXXX Application属性
-
右击XXXX Application打开属性对话框,点击"标识"标签,选择"交互式用户
-
点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加一个"NETWORK SERVICE"和"IIS_IUSRS"用户(注意要选择本计算机名,我的是xxxxx/IIS_IUSRS,就是iis服务器创建的用户),并给它赋予"本地启动"和"本地激活"权限。
-
依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK SERVICE"用户,然后赋予"本地访问"权限。
- 光按以上设置并不能完全保证不出问题,因为调用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="密码"/>