我有一個命令行程序,它可以交互式地從DOS窗口中運行。當我嘗試從asp.net應用程序中執行相同的命令和參數時,它失敗。該網絡應用程序具有腳本&執行權限。出於測試目的,我對Everyone組完全控制了整個web app文件夾和包含.exe文件的文件夾(位於Program Files中)的控制權限。該Web應用程序正在使用Windows集成安全性(無匿名),所以它應該使用我的憑據,我是管理員。在WIndows XP中運行。從asp.net運行命令行.exe時出錯
下面的代碼運行該命令。文件名和參數看起來不錯。但是,p.ExitCode = 1而不是0.如何解決問題並找出過程失敗的原因?我在調試器中查看了進程,發現有一些'System.InvalidOperationException'異常,但這並沒有說明什麼。爲什麼InvalidOperationException?
Process p = new Process();
p.StartInfo.FileName = filename;
p.StartInfo.Arguments = arguments;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = true;
p.StartInfo.RedirectStandardOutput = false;
p.StartInfo.RedirectStandardError = false;
p.Start();
p.WaitForExit();
if (0 != p.ExitCode)
{
ApplicationException ex =
new ApplicationException(string.Format("\"{0} {1}\" returned ({2})", filename, arguments, p.ExitCode));
throw ex;
}
運行後.exe不會輸出任何內容。當它成功運行時,它將返回到dos提示符。 – 2009-12-03 04:08:11
我在想,也許在出現錯誤的情況下,控制檯應用程序可能實際上會給出一些輸出(就像一個未處理的異常冒泡到命令提示符一樣)。如果不知道它在做什麼,那是無效的,這很難說清楚。一種可能的可能性是它試圖做一些事情,要求它實際上有一個窗口(例如等待用戶輸入,或者更加模糊地請求窗口句柄)。根據不同的應用程序調用時,它可能會輸出一些線索,爲什麼... – fyjham 2009-12-03 04:52:22