2017-07-21 9 views
0

Wenn ich versuche, einen Prozess von Web-API lokal zu starten, wurde erfolgreich gestartet, aber wenn ich es auf IIS 7.5 hostet und versuche, diesen Prozess zu starten, gibt es keine Antwort Ich bekomme. als ich versuchte, den Prozess zu Visual Studio zu debuggen Anbringen und ein Debug ich diesen Fehler Prozess des BasePropertyprocess.BasePriority warf eine Ausnahme vom Typ 'System.InvalidOperationException'

process.BasePriority threw an Exception of Type 'System.InvalidOperationException' 

ich einen Prozess fange ein cmd.exe zu beginnen gesehen starten und hier ist der Code:

public static void Start(long campaign_id, long contact_id, string startDate, string endDate, string user) 
    { 
     try 
     { 
      //WindowStyle = ProcessWindowStyle.Hidden; 
      startInfo.FileName = "cmd.exe"; 
      startInfo.WorkingDirectory = @"C:\"; 
      startInfo.Arguments = "/c sparkclr-submit --master " + ConfigurationManager.AppSettings["SparkMaster"] + " --driver-class-path " + AppDomain.CurrentDomain.BaseDirectory + "Engine\\mysql.jar " + "--exe CmAnalyticsEngine.exe " + AppDomain.CurrentDomain.BaseDirectory + "Engine " + campaign_id + " " + contact_id + " " + startDate + " " + endDate + " " + user; 
      startInfo.CreateNoWindow = false; 
      startInfo.UseShellExecute = false; 
      startInfo.LoadUserProfile = true; 
      //startInfo.Verb = "runas"; 
      process.StartInfo = startInfo; 
      process.Start(); 
      if (!process.HasExited) 
      { 
       Console.WriteLine("process is running"); 
      } 
      else 
      { 
       Console.WriteLine("process is stopped"); 
      } 
     } 
     catch (Exception e) 
     { 
      LogWritter.WriteErrorLog(e); 
     } 
    } 

Wenn ich dies lokal ausführen funktioniert es richtig, aber auf IIS seine Druckmeldung Prozess wird gestoppt.

muss ich geben Erlaubnis zu cmd.exe von IIS zu starten? Wenn ja, wie?

Jede Hilfe wird am meisten geschätzt.

Dank

Antwort

1

Dieser Fehler bedeutet, dass der Prozess exited.-oder- hat der Prozess noch nicht begonnen hat, so gibt es keine ID-Prozess.

public static void Start(long campaign_id, long contact_id, string startDate, string endDate, string user) 
{ 
    try 
    { 
     ProcessStartInfo startInfo = new ProcessStartInfo(); 
     startInfo.FileName = "cmd.exe"; 
     startInfo.WorkingDirectory = @"C:\"; 
     startInfo.Arguments = "/c sparkclr-submit --master " + ConfigurationManager.AppSettings["SparkMaster"] + " --driver-class-path " + AppDomain.CurrentDomain.BaseDirectory + "Engine\\mysql.jar " + "--exe CmAnalyticsEngine.exe " + AppDomain.CurrentDomain.BaseDirectory + "Engine " + campaign_id + " " + contact_id + " " + startDate + " " + endDate + " " + user; 
     startInfo.CreateNoWindow = false; 
     startInfo.UseShellExecute = false; 
     startInfo.LoadUserProfile = true; 
     //startInfo.Verb = "runas"; 
     Process process = new Process(); 
     process.StartInfo = startInfo; 
     process.Start(); 
     if (!process.HasExited) 
     { 
      Console.WriteLine("process is running"); 
     } 
     else 
     { 
      Console.WriteLine("process is stopped"); 
     } 
    } 
    catch (Exception e) 
    { 
     LogWritter.WriteErrorLog(e); 
    } 
} 

Ich hoffe, es hilft.

Verwandte Themen