我有一個Web API應用程序需要運行一個Python腳本,該腳本又運行一個Perl腳本:)執行一些操作,並從中獲取輸出結果。 我做的方式是啓動一個進程:從控制檯應用程序啓動進程和ASP.NET應用程序之間的區別
var start = new ProcessStartInfo()
{
FileName = _pythonPath, //@"C:\Python27\python.exe",
Arguments = arguments, //@"D:\apps\scripts\Process.py
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true
};
using (Process process = Process.Start(start))
{
using (StreamReader reader = process.StandardOutput)
{
var result = reader.ReadToEnd();
var err = process.StandardError.ReadToEnd();
process.WaitForExit();
return result;
}
}
裏面的腳本嘗試連接使用P4的Python API來Perforce的服務器,然後Perl腳本調用P4命令爲好。從Console應用程序運行此代碼時,一切都很順利。該程序自動獲取Perforce設置(我有一個P4V客戶端,並指定了所有設置)。但是,從ASP.NET Web API運行時,它沒有得到settigns,並且說它不能與perforce一致:1666服務器(我猜這是沒有指定settign時的標準值)。
我明白,沒有那麼多人使用Perforce,特別是以這種方式,並可以在這裏幫助,但想知道什麼是從控制檯應用程序運行此腳本和Web API應用程序之間的區別造成這種不同的行爲。
什麼用戶帳戶是在下運行的應用程序池?您是否嘗試在* that *帳戶下運行控制檯應用程序而不是您自己的(或嘗試配置應用程序池在您的帳戶下運行)? – 2014-11-04 08:58:27
哦,是的,你是對的!當我將我的帳戶用於應用程序池時,它工作正常。我真的很想念這種可能性,謝謝。現在的問題是以某種方式爲應用程序池帳戶指定這些Perforce變量,但我認爲它不屬於.NET :)。你可能創造一個答案,我可以接受它嗎? – MyUserName 2014-11-04 09:31:27
您能否將Perforce變量傳遞給腳本,而不是試圖從用戶的環境中讀取它們? – 2014-11-04 18:50:24