[英]Why can't my ASP.NET web service kick off a process, but my .NET console app can?
這是來自類庫的代碼:
proc.StartInfo = new ProcessStartInfo(CmdPath, "+an -b"); proc.StartInfo.RedirectStandardOutput = true; proc.StartInfo.CreateNoWindow = true; proc.StartInfo.UseShellExecute = false; proc.Start(); proc.WaitForExit();
這是完全正如我從控制台測試應用程序調用時所期望的那樣。 當我使用相同的庫並從ASP .NET Web服務調用該方法時,它就會掛起。
我在這里缺少什么,也許權限? ASPNET服務可以訪問EXE所在的文件夾,我看到它在任務管理器中運行,盡管它沒有做任何事情。
如果有人能告訴我我做錯了什么,我將不勝感激。 謝謝。
編輯 :抱歉缺乏信息。 CmdPath轉到我們的調度軟件的命令行界面。 我根據他們提供的文檔傳遞命令。 我有一種獲取作業列表的方法,以及另一種運行作業的方法。 ......嗯想法。 客戶端通常使用Active Directory登錄,我認為模仿是必要的。 現在去測試。
編輯2 :好的,現在客戶端正在搞亂AccessViolation問題。 這顯然是權限的事情。 如果軟件使用集成的AD授權,並且我冒充我的AD帳戶,那就足夠了嗎? 我正在使用web.config中的標記進行模擬。
您認為使用ASPNET標識啟動可執行服務器端會遇到很多問題,您是否嘗試使用適當的priveleges 模擬身份(這確實有用),但是再次在服務器端啟動可執行文件可能不是一個好主意首先。
ASP.Net用戶帳戶可能沒有執行權限。 您能否提供更多信息,說明為什么要嘗試這樣做,因為可能有更好的方法。
這可能是權限問題。 ASPNET服務可能具有可執行文件的權限,但它具有可執行文件所有功能的權限。
例如,如果可執行文件復制文件,ASPNET帳戶是否擁有這些文件的源和目標路徑的完全權限? 需要詢問可執行文件所做的所有事情。
如果您需要解決此問題,可以使用模擬,或者指定網站在IIS中的其他帳戶下運行,但這些不是推薦的做法,並且在大多數情況下比它們的價值更麻煩。
重定向標准輸出時,是否需要使用ReadToEnd來讀取StandardOutput的響應?
您可能應該檢查您的可執行文件執行的內容,因為ASP.NET在具有有限權限的用戶(IIS 6.0上的NETWORK SERVICE)下工作,並且您的可執行文件也獲得此權限並在同一用戶下運行。 至於你等待它完成它的工作,你可能運行的可執行文件可能有些錯誤。 我建議你做一個簡單的實驗 - 將你的WebApplication切換到VS web服務器內置,稱為“Casini”並檢查你的代碼行為。 通過這種方式,您可以證明自己不是ASP.NET的錯。 如果我是對的,您唯一需要做的就是調查可執行文件的問題並確定它需要什么權限。
而不是模仿或給予Asp.net更多權限,如何在不同的憑據下啟動流程。 在下面的示例中,UserWithVeryLimitedRights將是您創建的新帳戶,只具有運行應用程序的權限。 這樣做可以將安全風險降至最低。
ProcessStartInfo StartInfo = new ProcessStartInfo();
SecureString ss = new SecureString();
string insecurePassword = "SomePassword";
foreach(char passChar in insecurePassword.ToCharArray()) {
ss.AppendChar(passChar);
}
StartInfo.RedirectStandardInput = true;
StartInfo.RedirectStandardError = true;
StartInfo.RedirectStandardOutput = true;
StartInfo.CreateNoWindow = true;
StartInfo.UseShellExecute = false;
StartInfo.Password = ss;
StartInfo.UserName = @"UserWithVeryLimitedRights";
StartInfo.FileName = @"c:\winnt\notepad.exe";
Process.Start(StartInfo);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.