Process.Start()继续运行我的.exe作为后台进程MVC ASP.Net

时间:2015-01-22 13:13:32

标签: c# asp.net-mvc asp.net-mvc-4 process.start

首先,我已经检查了网络以尝试找到答案但是我只遇到过想要在后台运行他们的流程的人,而我的问题却是相反的。

我在控制器上输入了以下代码,单击按钮时会启动该过程:

string fileLocation = @"C:\somefolder\anotherFolder\...\application.exe";
        ProcessStartInfo oStartInfo = new ProcessStartInfo();
        oStartInfo.FileName = fileLocation;
        oStartInfo.UseShellExecute = false;
        oStartInfo.CreateNoWindow = true;
        oStartInfo.WindowStyle = ProcessWindowStyle.Normal;
        oStartInfo.CreateNoWindow = false;
        var process = new Process { StartInfo = oStartInfo, EnableRaisingEvents = true };
        process.Start();

现在我已经运行了代码并且它正在执行exe或者当我打开任务管理器时它会出现。但我似乎无法让它在前台执行,因此用户可以做他们需要做的事情。

*额外信息

  • 每当我在运行后尝试重建时都存在一个问题,因为exe与项目的Web部分在同一个解决方案中,但问题是我必须去任务管理器并终止进程否则它无法访问.exe - 这是我需要在前台运行它的另一个主要原因

  • Visual Studio 2013 Express for web

  • 实体框架
  • MVC Asp.Net网站项目

任何帮助都会非常棒!

1 个答案:

答案 0 :(得分:1)

请参见此处:Process.Start method

  

ASP.NET网页和服务器控件代码在Web服务器上的ASP.NET辅助进程的上下文中执行。如果在ASP.NET网页或服务器控件中使用Start方法,则新进程将在具有受限权限的Web服务器上执行。该过程不会在与客户端浏览器相同的上下文中启动,也无法访问用户桌面。

因此,该进程将运行服务器端,而不是客户端,它也将运行在ASP.Net工作进程(w3wp.exe)的用户配置文件中,这意味着除非您发生,否则您将看不到进程窗口以相同的个人资料以交互方式登录。