protected void Page_Load(object sender, EventArgs e) { idPyetjes.Focus(); baseDirectory = "D:\\Desktop\\CompileTest\\" + professorUsername + "\\pyetjet"; question = new Questions(); }
protected void SubmitCode(dynamic param) { fileLocation = studentFilesDirectory.FullName; string runArguments = ""; int paramId = 0; do { string outputError = string.Empty, output = string.Empty; if (param != null && param.Count > paramId) { runArguments = param[paramId].ToString(); //question.Parameters.Add(param[paramId]); } string cmdCompileCommand = paramId == 0 ? string.Format("/c cd {0} && javac {1}.java && java {1} {2}", fileLocation, fileName, runArguments).Trim() : string.Format("/c cd {0} && java {1} {2}", fileLocation, fileName, runArguments).Trim(); Debug.WriteLine("cmd command " + cmdCompileCommand); cmd = new Process(); ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.UseShellExecute = false; startInfo.WorkingDirectory = fileLocation; startInfo.FileName = "C:\\WINDOWS\\system32\\cmd.exe"; //startInfo.Verb = "runas"; startInfo.Arguments = cmdCompileCommand; startInfo.WindowStyle = ProcessWindowStyle.Hidden; startInfo.RedirectStandardOutput = true; startInfo.RedirectStandardError = true; cmd.StartInfo = startInfo; cmd.Start(); output = cmd.StandardOutput.ReadToEnd(); outputError = cmd.StandardError.ReadToEnd(); //wait 10 seconds for cmd to exit, otherwise kill it if (!cmd.WaitForExit(milliseconds: 10000)) { cmd.Kill(); Debug.WriteLine("CMD took too long to finish. Just killed it!"); } if (outputError.Length == 0) { question.FinalResults.Add(output.Length != 0 ? output : null); } else { question.FinalResults.Add("Exception"); Debug.WriteLine("output error: " + outputError); } } while (param.Count - 1 > paramId++); //question.FinalResults.Add(/*final reults*/); exam.Questions.Add(this.question); this.question = null; if (++questionsAskedSoFar <= questionsForThisExam) { LoadQuestion(questionsAskedSoFar); UpdateFormWithQuestionsData(); } else { File.WriteAllText(fileLocation, JsonConvert.SerializeObject(exam)); } }