2011-03-09 81 views
0

根據我的理解:如果我的asp.net應用程序產生一個進程,該進程是否在asp.net應用程序運行的同一個應用程序域內運行?

  1. IIS調用服務器上的整個asp.net應用程序的單一工作進程。
  2. 工作進程包含應用程序域的集合。
  3. 工作進程中的每個應用程序域都對應一個asp.net應用程序。

如果我的asp.net應用程序爲每個請求產生一個進程,進程是否在asp.net應用程序運行的同一個應用程序域內運行?

Process p = new Process(); 

    p.EnableRaisingEvents = true; 
    p.Exited += new EventHandler(p_Exited); 

    p.StartInfo.Arguments = "-fmt=pdflatex -interaction=nonstopmode " + inputpath; 
    p.StartInfo.WorkingDirectory = dir; 

    p.StartInfo.UseShellExecute = false; 
    p.StartInfo.FileName = "pdftex.exe"; 

    p.StartInfo.LoadUserProfile = true; 

    p.Start(); 
    p.WaitForExit(); 
+0

可能的重複[如何優化一個asp.net產卵每個請求的新進程?](http://stackoverflow.com/questions/5242652/how-to-optimize-an-asp-net-spawning-每個請求一個新進程) – 2011-03-09 10:37:06

+0

再次提問不會改變答案。 – 2011-03-09 10:37:27

回答

2

簡單的答案是否定的。當您開始一個新流程時,會創建一個新的流程空間,並且它獨立於您的應用程序域。產生的進程可能是也可能不是託管代碼並作爲獨立進程運行。如果定義了適當的設置,它可以繼承其創建者的安全上下文。

+0

除了繼承其創建者安全上下文之外,產生的進程是否有可能採用高於創建者的安全訪問級別? – xport 2011-03-09 10:41:12

+0

不是默認情況下,但您可以嘗試使用設置ProcessStartInfo的用戶名和密碼來扮演模擬創建者。另一個選項是嘗試啓用UseShellExecute,它將使用OS shell啓動進程。 – 2011-03-09 10:50:52

1

不是。一個AppDomain不能超出它所在進程的邊界。此外,AppDomain是來自.NET世界的概念。如果pdftex.exe是一個.NET應用程序,它有它自己的AppDomain。如果它不是.NET應用程序,它根本沒有AppDomain。

相關問題