如果我的asp.net应用程序产生一个进程,该进程是否在asp.net应用程序运行的同一个应用程序域内运行?
根据我的理解:如果我的asp.net应用程序产生一个进程,该进程是否在asp.net应用程序运行的同一个应用程序域内运行?
- IIS调用服务器上的整个asp.net应用程序的单一工作进程。
- 工作进程包含应用程序域的集合。
- 工作进程中的每个应用程序域都对应一个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();
简单的答案是否定的。当您开始一个新流程时,会创建一个新的流程空间,并且它独立于您的应用程序域。产生的进程可能是也可能不是托管代码并作为独立进程运行。如果定义了适当的设置,它可以继承其创建者的安全上下文。
除了继承其创建者安全上下文之外,产生的进程是否有可能采用高于创建者的安全访问级别? – xport 2011-03-09 10:41:12
不是默认情况下,但您可以尝试使用设置ProcessStartInfo的用户名和密码来扮演模拟创建者。另一个选项是尝试启用UseShellExecute,它将使用OS shell启动进程。 – 2011-03-09 10:50:52
不是。一个AppDomain不能超出它所在进程的边界。此外,AppDomain是来自.NET世界的概念。如果pdftex.exe
是一个.NET应用程序,它有它自己的AppDomain。如果它不是.NET应用程序,它根本没有AppDomain。
可能的重复[如何优化一个asp.net产卵每个请求的新进程?](http://stackoverflow.com/questions/5242652/how-to-optimize-an-asp-net-spawning-每个请求一个新进程) – 2011-03-09 10:37:06
再次提问不会改变答案。 – 2011-03-09 10:37:27