C# ASP.NET Webservice调用外部exe无效的解决方法

时间:2023-01-20 10:09:59

最近用asp.net做webservice,其中有个功能是调用执行外部的exe(类似cmd中执行),但执行Process.Start之后就没有结果,同样代码在winform下正常,折腾两天终于找到解决方法

本文参考了以下网页,十分感谢

http://bbs.csdn.net/topics/300053869

http://blog.163.com/qiaoweipeng@126/blog/static/15737970200862331842368/

环境:win7 sp1 64位 以及IIS,vs2010 编译为x86程序

首先到 服务》IIS Admin Service(双击他)》登录》勾上【允许服务于桌面交互】

C# ASP.NET Webservice调用外部exe无效的解决方法

然后建立web程序,以【网站】方式建立,建网站后会自动建立对应的应用程序池

C# ASP.NET Webservice调用外部exe无效的解决方法

选中对应的【应用程序池】,点 【高级设置】,修改其中的【进程模型】》【标识】为 LocalSystem

C# ASP.NET Webservice调用外部exe无效的解决方法

然后把IIS,IIS Admin Service等重启,就ok了

PS:网上有的说设了 IIS Admin Service 就可以了,可能有些情况是可以的,大家注意一下

PS2:应用程序池的【标识】,如果LocalSystem不行,那就设【自定义账户】,账户用管理员账户(administrator)

PS3:这样执行后的效果可能会跟winform桌面程序执行的效果有点不同,例如我调用的exe程序,winform调用后运行时有个命令行窗体一直出现,而webservice调用没有命令行窗体,但通过 【任务管理器】 可以看到进程是运行着