|
|
|
สอบถามเรื่อง ProcessStartInfo("cmd.exe"); ไม่ทำงาน กับ client |
|
|
|
|
|
|
|
Code (C#)
public void Compile()
{
String strSQL = @" SELECT Course_ID
FROM HW
where HW_Name = " + "'" + DropDownList1.Text + "'";
SqlDataReader sdr1 = clsDB.QueryDataReader(strSQL);
sdr1.Read();
String Course_ID = sdr1["Course_ID"].ToString();
clsDB.Close();
DirectoryInfo myDirInfo;
DirectoryInfo myDirInfo2;
DirectoryInfo[] arrFolderInfo;
myDirInfo = new DirectoryInfo(Server.MapPath("~/Storage_File/Teacher/" + User.Identity.Name + "/" + Course_ID + "/"));
arrFolderInfo = myDirInfo.GetDirectories("*");
foreach (DirectoryInfo myFolderInfo in arrFolderInfo)
{
try
{
string filenameCompile = DropDownList1.Text + "_" + myFolderInfo.Name + ".cpp";
string filenameCompile_2 = DropDownList1.Text + "_" + myFolderInfo.Name;
string ShowResult = DropDownList1.Text + "_" + myFolderInfo.Name + ".exe";
string Output = DropDownList1.Text + "_" + myFolderInfo.Name + ".txt";
string StudentID = myFolderInfo.Name;
System.Diagnostics.ProcessStartInfo si = new System.Diagnostics.ProcessStartInfo("cmd.exe");
si.RedirectStandardInput = true; si.RedirectStandardOutput = true; si.RedirectStandardError = true; si.UseShellExecute = false; si.CreateNoWindow = true;
System.Diagnostics.Process console = System.Diagnostics.Process.Start(si);
console.StandardInput.WriteLine(@"C:");
console.StandardInput.WriteLine(@"cd " + (Server.MapPath("~/Storage_File/Teacher/" + User.Identity.Name + "/" + Course_ID + "/" + myFolderInfo.Name + "/" + DropDownList1.Text + "/")));
console.StandardInput.WriteLine(@"g++ " + filenameCompile + " -o " + filenameCompile_2);
System.Threading.Thread.Sleep(1000);
//console.StandardInput.WriteLine(@"" + ShowResult + ">" + Output);
console.StandardInput.WriteLine(@"exit");
System.Threading.Thread.Sleep(1000);
myDirInfo2 = new DirectoryInfo(Server.MapPath("~/Storage_File/Teacher/" + User.Identity.Name + "/" + Course_ID + "/" + myFolderInfo.Name + "/" + DropDownList1.Text + "/"));
FileInfo[] arrFileInfo;
arrFileInfo = myDirInfo2.GetFiles("*.exe");
foreach (FileInfo myFileInfo in arrFileInfo)
{
if (myFileInfo.Name == ShowResult)
{
String strSQL1 = @" INSERT INTO Check_Compile
(StudentID,HW_Name,Compile)
VALUES ('" + StudentID + "', '" + DropDownList1.Text + "', '" + "ผ่าน" + "')";
clsDB.QueryExecuteNonQuery(strSQL1);
clsDB.Close();
}
}
}
// Modify
catch (System.IO.IOException e)
{
}
}
String strSQL2 = @" INSERT INTO Check_Compile (StudentID,HW_Name,Compile)
select Enroll.Student_ID ,'" + DropDownList1.Text + "','ไม่ผ่าน' FROM Enroll WHERE Enroll.Student_ID NOT IN(select Check_Compile.StudentID from Check_Compile where HW_Name = " + "'" + DropDownList1.Text + "'" + ")";
clsDB.QueryExecuteNonQuery(strSQL2);
clsDB.Close();
}
จริงๆแล้วเมื่อ ทำ ฟังก์ชันนี้เสร็จ โปรแกรมจะทำการสร้าง ไฟล์ .exe ขึ้นมา ตาม path ที่กำหนดไว้อะครับ
ปัญหาที่พบคือ
เมื่อเข้า ด้วย url http://192.168.1.3/test/Teacher/Check_Homework.aspx
ไม่มีการสร้าง ไฟล์ .exe ขึ้นมา
แต่เมื่อเข้าด้วย http://localhost:54392/Teacher/Check_Homework.aspx
โปรแกรมทำงานได้ปกติ
ไม่ทราบว่าต้องแก้ ยังไงหรอครับพี่ๆ
แต่ว่า เรื่อง permission ผมแก้หมดแล้ว สามารถเขียนไฟล์ หรือ สร้าง folder ไว้บน server ได้แล้ว
หรือว่า ไคลเอน ไม่สามารถสั่ง รัน cmd ได้อะครับ หรือว่า
มีปัญหา ตอน
console.StandardInput.WriteLine(@"cd " + (Server.MapPath("~/Storage_File/Teacher/" + User.Identity.Name + "/" + Course_ID + "/" + myFolderInfo.Name + "/" + DropDownList1.Text + "/")));
console.StandardInput.WriteLine(@"g++ " + filenameCompile + " -o " + filenameCompile_2);
ใน cmd มันไม่สามารถ cd ไปที่ path (Server.MapPath("~/Storage_File/Teacher/" + User.Identity.Name + "/" + Course_ID + "/" + myFolderInfo.Name + "/" + DropDownList1.Text + "/")) นี้ได้หรือเปล่า
หรือว่าต้อง set iis อะไรเพิ่ม
หรือยังไง โอ๊ยๆ งง
พี่ๆช่วย ดูให้ทีนะครับบบบบบบ
Tag : .NET, Web (ASP.NET), Console App, WebService, C#
|
ประวัติการแก้ไข 2011-01-24 17:20:21 2011-01-24 17:30:27
|
|
|
|
|
Date :
2011-01-24 17:17:20 |
By :
nuicpe |
View :
1565 |
Reply :
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอถามอะไรเพิ่มหนอ่ยนะครับ
เราสามารถ สั่งให้ client รัน command ของ dos ได้หรือเปล่าีครับ
แล้ว จาก code ที่ผมโพสไว้ด้านบน
มันสามารถ ทำงานได้(จาก client ) หรือเปล่าครับ
หรือว่าต้องใช้วิธี ไหนน
ช่วยแนะนำทีนะครับๆๆ
|
|
|
|
|
Date :
2011-01-24 19:02:53 |
By :
nuicpe |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|