如题,在iis7.0的环境下,是web→exe→bat→exe这样的流程。
vs2008的开发环境里,是没有问题的,可以正常打开“计算器”。但发布到iis上去执行以后,就卡死了,调试以后发现是卡在“process.WaitForExit()”这行代码。看了任务管理器,这时候cmd.exe和calc.exe是都有的。
请问应该如何解决这个问题。
以下是exe中调用bat的代码:
以下是bat中调用exe的代码:
其实就是在同一台电脑上,开发环境可以,iis上不行。
开发环境里,可以打开“计算器”。iis上,看不到打开“计算器”,不过可以看到"calc.exe"的进程出现在任务管理器里。
没搞过这种用法.会不会是权限问题.应用程序用户改为管理员行不行?
是指iis中应用程序池的执行身份从默认的“ApplicationPoolIdentity”改成自定义的“administrator”么?
发布到IIS是指服务端吗?
开发环境是本地或着说是客户端,你调出 记本事 计算器之类 可以,而且开发环境有权限,当你发服务端,程序是在服务端执行的,调用的是服务端的 计算器!你想象一下这个过程?
IIS也是在本地的。其实就是在同一台电脑上,开发环境可以,iis上不行。
<identity impersonate="true" userName="" password=""/>
在web.config里用administrator试过了,还是不行。
用系统的账户和密码
@FreeSaber: 用系统的管理员试过了,还是不行。
ApplicationPoolIdentity 修改为LocalSystem试试呢。
试过了,还是不行。
@hamankarn: 表示无力了,没做过这种事。查了些资料,都是说权限问题。试着用try catch看看有没有报错什么的。
@幻天芒: 就是在“process.WaitForExit()”卡死了。
@hamankarn: 注释掉Wait那句呢。。
我现在没有环境不方便实验,也没做过这么多层级的调用。但推测是出现了死锁。
用关键字“Process.waitforexit”谷歌搜索找找答案(没有谷歌,百度等也行),再分析下
个人感觉是iis的权限问题。
以前是“web→exe”的调用,现在加了个bat貌似就不行了。
之前用这个遇到过死锁,是因为StandardOutput流忘记close了。看看msdn上关于这个属性的介绍。
@liqipeng: 这种问题我也看到过,不过我这里没有用到StandardOutput属性。
@hamankarn: 主要是看到你说进程都有了,所以在想会不会不是权限问题
@liqipeng: 我也是这么想的,不过暂时还没有头绪。
@hamankarn: 可以往死锁的方向考虑一下。
@liqipeng: 好的,多谢。