如果我的asp.net应用程序产生一个进程,该进程是否在asp.net应用程序运行的同一个应用程序域内运行?

问题描述:

根据我的理解:如果我的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

简单的答案是否定的。当您开始一个新流程时,会创建一个新的流程空间,并且它独立于您的应用程序域。产生的进程可能是也可能不是托管代码并作为独立进程运行。如果定义了适当的设置,它可以继承其创建者的安全上下文。

+0

除了继承其创建者安全上下文之外,产生的进程是否有可能采用高于创建者的安全访问级别? – xport 2011-03-09 10:41:12

+0

不是默认情况下,但您可以尝试使用设置ProcessStartInfo的用户名和密码来扮演模拟创建者。另一个选项是尝试启用UseShellExecute,它将使用OS shell启动进程。 – 2011-03-09 10:50:52

不是。一个AppDomain不能超出它所在进程的边界。此外,AppDomain是来自.NET世界的概念。如果pdftex.exe是一个.NET应用程序,它有它自己的AppDomain。如果它不是.NET应用程序,它根本没有AppDomain。