ASP.NET Process Start

时间:2015-03-05 11:15:03

标签: c# asp.net asp.net-mvc process iis-express

我使用Visual Studio Web 2013 Express Edition制作了新项目(ASP.NET MVC Web应用程序)。加载索引页面,重定向,一切正常,但在我的代码的某些部分我需要创建Process并执行它,等待它完成,解析该外部应用程序的输出并向用户显示该输出。但我一无所获。在逐行调试代码时:

ProcessStartInfo info = new ProcessStartInfo();
info.FileName = Tool;
info.Arguments = filename + " " + avArray;
info.CreateNoWindow = true;
info.UseShellExecute = false;
info.RedirectStandardOutput = true;

Process p = new Process();
p.StartInfo = info;
p.Start();
p.WaitForExit();

进程立即退出,有人会说这是一个非常快的程序,但应用程序需要至少5秒(有时是20秒)才能完成。 我认为发生的事情是,首先不创建进程,因为我的IIS设置或其他任何设置都不允许我运行此EXE。我该怎么做才能改变这个?

1 个答案:

答案 0 :(得分:2)

在过去的两周里,我一直在努力解决这个问题,我可能已经阅读过每一篇文章,并尝试了所有解决方案。我选择写这篇文章,因为它是最新的。

首先,我使用VS2013,在IIS Express上进行测试,然后在IIS 8.5上进行测试,网页版本为3,目标框架为4.5。我假设(与我的情况一样)的目标是在服务器上启动该过程。

我学到了什么:

  1. 使用IIS Express可以让您毫无问题地运行该过程。您可以尝试允许它启动窗口,或者通过shell启动您的进程,以确保它实际上是在启动(shell窗口应该弹出并关闭)。如果发生这种情况,请确认您提供了正确的程序路径,等等。到目前为止一切顺利。

  2. 进入IIS 8.5是完全不同的事情。从理论上讲,这样做的坏方法应该是直截了当的:你为该服务器创建一个应用程序池,给它一个高权限帐户(例如本地系统或网络系统);转到AdministrativeTools-> Services-> IIS,LogOn选项卡,并允许与桌面交互。您应该能够像在IISExpress中那样执行相同操作,但在我的情况下,与使用低权限帐户的情况相同。

  3. 我实际上是通过尝试使用模拟开始的,但也无法使用IIS8.5启动该过程。 编辑:我今天再次重试,如果我启用假冒,api甚至不会运行。

  4. 我花了比我想象的更多的时间,为什么我无法使用IIS8.5正常工作的任何输入(@clzola:IIS Express应该做的工作)非常欢迎。