问题描述
netframework1.1使用process.start调用某控制台程序A.exe执行数据处理。1.WinXP下:进入IIS,把网站的执行权限,调整到"脚本与可执行文件",可顺序启动并执行A.exe2.WindowsServer200832位:无需特别设置(忘了是否做过特别设置,因现在手头上暂无此环境,故无法验证),即可顺序启动并执行A.exe3.WindowsServer2008R264位:可顺序启动A.exe(在任务管理器中可找到该程序),但该程序没有被执行。故进入IIS,进入网站的处理程序映射,编辑功能权限,选中[执行],但没有效果。有哪位在WindowsServer2008R264位遇到过类似问题没有?有何解决方法?
解决方案
解决方案二:
IIS的应用程序池中的,高级设置中,启用32位应用程序修改为true。来兼容不同系统(32或64)试试
解决方案三:
>wangnaisheng谢谢你的回复,IIS的应用程序池中目前包含3个的应用及其32位应用程序启用情况:ASP.NET1.1启用32位应用程序当前为TrueClassic.NETAppPool启用32位应用程序当前为FalseDefaultAppPool启用32位应用程序当前为False网站使用的应用程序池为ASP.NET1.1,所以问题好像不在这里。另外,刚才同时尝试了其它测试,发现一个情况:网站的配置文件中有一条配置:<identityimpersonate="true"userName="***"password="***"/>用于模拟管理员用户,如果去掉此配置,则exe程序可顺利启动并执行。但去掉此配置,则有一块Excel服务器端导出操作会提示"没有权限"而失败,而该导出操作在xp和winserver200832位上是没有此问题的。有何办法处理这种问题?
解决方案四:
引用2楼dongshanyu的回复:
>wangnaisheng谢谢你的回复,IIS的应用程序池中目前包含3个的应用及其32位应用程序启用情况:ASP.NET1.1启用32位应用程序当前为TrueClassic.NETAppPool启用32位应用程序当前为FalseDefaultAppPool启用32位应用程序当前为False网站使用的应用程序池为ASP.NET1.1,所以问题好像不在这里。另外,刚才同时尝试了其它测试,发现一个情况:网站的配置文件中有一条配置:<identityimpersonate="true"userName="***"password="***"/>用于模拟管理员用户,如果去掉此配置,则exe程序可顺利启动并执行。但去掉此配置,则有一块Excel服务器端导出操作会提示"没有权限"而失败,而该导出操作在xp和winserver200832位上是没有此问题的。有何办法处理这种问题?
那还是你自己的逻辑有问题config文件最终必须读出来,把里面内容放到变量里,所以跟config文件到底怎么配的其实没啥关系就看你调用excel和exe的逻辑,到底如何使用这些变量的.
解决方案五:
>Z65443344:config文件最终必须读出来,把里面内容放到变量里这个思路是对的,不过identity里的信息应该是通过IIS而作用到网站的,而我前面提到的excel和exe处均没直接使用此配置信息。若是直接使用此配置信息,自然可以根据业务逻辑有选择性的使用配置信息了。
解决方案六:
配置用户模拟模式是为了让IIS服务级的应用,实现一些用户级的操作(服务与用户桌面应用是session隔离的)WindowsServer2008R264位:可顺序启动A.exe(在任务管理器中可找到该程序),但该程序没有被执行。没有执行,需要你自己从这个程序入手,拿手它的运行状态和错误日志去分析原因
解决方案七:
>dongxinxi我在A.exe中的入口SubMain的一开始添加了一条语句用于记录程序运行情况,但A.exe启动后并没得到该信息,所以判断该程序没被执行。如果在资源管理器中直接选择"以管理员身份运行"A.exe,可得到该信息。
解决方案八:
试下设置A.exe所在文件夹的用户权限
解决方案九:
>a552301已经尝试过,但没有效果
解决方案十:
引用6楼dongshanyu的回复:
>dongxinxi我在A.exe中的入口SubMain的一开始添加了一条语句用于记录程序运行情况,但A.exe启动后并没得到该信息,所以判断该程序没被执行。如果在资源管理器中直接选择"以管理员身份运行"A.exe,可得到该信息。
任务管理器里看得到进程说明是尝试启动了,但是可能由于某种原因启动过程中就出错,你得拿到这个错误信息,系统日志里的“应用程序”里也看看全局未处理的异常,线程退出异常都处理掉纪录到日志
解决方案十一:
如果进程出错,会问你是中断还是继续的窗口但是你是在服务里启动的进程,窗口是看不到的,程序异常处理做好,是不会一点线索都找不到的
解决方案十二:
>dongxinxi:如果进程出错,会问你是中断还是继续的窗口没有此询问窗口,若不手工结束进程,该程序一直会挂在那里。刚才查看了那段时间的Windows日志,在”应用程序“,没找到相关异常信息。不过在"系统"处,找到了几条警告信息,如下:为应用程序池“ASP.NET1.1”提供服务的进程在与WindowsProcessActivationService通信时出现严重错误。该进程ID为“5796”。数据字段包含错误号。
解决方案十三:
没弄过,帮顶下
解决方案十四:
引用11楼dongshanyu的回复:
>dongxinxi:如果进程出错,会问你是中断还是继续的窗口没有此询问窗口,若不手工结束进程,该程序一直会挂在那里。刚才查看了那段时间的Windows日志,在”应用程序“,没找到相关异常信息。不过在"系统"处,找到了几条警告信息,如下:为应用程序池“ASP.NET1.1”提供服务的进程在与WindowsProcessActivationService通信时出现严重错误。该进程ID为“5796”。数据字段包含错误号。
我说了,就算是有窗口,你用服务去启动也是看不到窗口的,而是会被系统弹一个全屏遮罩的警告窗口,在你点掉那个窗口之前,被启动的进程将处理阻塞状态(类似挂起)要知道发生了什么事,你可以修改你的那个exe,在关键地方打印出运行状态,通过日志去分析exe运行后,执行到哪一步了,每一步的执行结果==