首页 新闻 会员 周边 捐助

ASP.NET中调用bat的问题

0
悬赏园豆:200 [已关闭问题] 关闭于 2015-07-01 16:37

如题,在iis7.0的环境下,是web→exe→bat→exe这样的流程。

vs2008的开发环境里,是没有问题的,可以正常打开“计算器”。但发布到iis上去执行以后,就卡死了,调试以后发现是卡在“process.WaitForExit()”这行代码。看了任务管理器,这时候cmd.exe和calc.exe是都有的。

请问应该如何解决这个问题。

 

以下是exe中调用bat的代码:

 

 

以下是bat中调用exe的代码:

问题补充:

其实就是在同一台电脑上,开发环境可以,iis上不行。

 

开发环境里,可以打开“计算器”。iis上,看不到打开“计算器”,不过可以看到"calc.exe"的进程出现在任务管理器里。

初心忘るべからず的主页 初心忘るべからず | 初学一级 | 园豆:5
提问于:2015-07-01 13:59
< >
分享
所有回答(5)
0

没搞过这种用法.会不会是权限问题.应用程序用户改为管理员行不行?

吴瑞祥 | 园豆:29449 (高人七级) | 2015-07-01 14:04

是指iis中应用程序池的执行身份从默认的“ApplicationPoolIdentity”改成自定义的“administrator”么?

 

0

发布到IIS是指服务端吗?
开发环境是本地或着说是客户端,你调出 记本事 计算器之类 可以,而且开发环境有权限,当你发服务端,程序是在服务端执行的,调用的是服务端的 计算器!你想象一下这个过程?

ChixTech | 园豆:171 (初学一级) | 2015-07-01 14:18

IIS也是在本地的。其实就是在同一台电脑上,开发环境可以,iis上不行。

0

<identity impersonate="true" userName="" password=""/>

凡一二三 | 园豆:85 (初学一级) | 2015-07-01 14:23

在web.config里用administrator试过了,还是不行。

用系统的账户和密码

支持(0) 反对(0) 凡一二三 | 园豆:85 (初学一级) | 2015-07-01 14:27

@FreeSaber: 用系统的管理员试过了,还是不行。

0

ApplicationPoolIdentity 修改为LocalSystem试试呢。

幻天芒 | 园豆:37207 (高人七级) | 2015-07-01 14:23

试过了,还是不行。

@hamankarn: 表示无力了,没做过这种事。查了些资料,都是说权限问题。试着用try catch看看有没有报错什么的。

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2015-07-01 15:32

@幻天芒: 就是在“process.WaitForExit()”卡死了。

@hamankarn: 注释掉Wait那句呢。。

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2015-07-01 17:22
0

我现在没有环境不方便实验,也没做过这么多层级的调用。但推测是出现了死锁。

用关键字“Process.waitforexit”谷歌搜索找找答案(没有谷歌,百度等也行),再分析下

liqipeng | 园豆:1160 (小虾三级) | 2015-07-01 14:35

个人感觉是iis的权限问题。

以前是“web→exe”的调用,现在加了个bat貌似就不行了。

 

之前用这个遇到过死锁,是因为StandardOutput流忘记close了。看看msdn上关于这个属性的介绍。

支持(0) 反对(0) liqipeng | 园豆:1160 (小虾三级) | 2015-07-01 14:39

@liqipeng: 这种问题我也看到过,不过我这里没有用到StandardOutput属性。

@hamankarn: 主要是看到你说进程都有了,所以在想会不会不是权限问题

支持(0) 反对(0) liqipeng | 园豆:1160 (小虾三级) | 2015-07-01 14:52

@liqipeng: 我也是这么想的,不过暂时还没有头绪。

@hamankarn: 可以往死锁的方向考虑一下。

支持(0) 反对(0) liqipeng | 园豆:1160 (小虾三级) | 2015-07-01 15:01

@liqipeng: 好的,多谢。

清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册