如何优化asp.net为每个请求生成一个新进程?

时间:2011-03-09 07:31:10

标签: c# asp.net

我有一个asp.net mvc应用程序产生Process,如下所示:

        Process p = new Process();

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

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

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

        p.StartInfo.LoadUserProfile = true;

        p.Start();
        p.WaitForExit();

在进一步说明之前,我需要知道,例如pdflatex.exe是托管代码还是本机代码?

编辑1

我需要考虑这个因为:(希望我没错......)

  1. 每个Asp.net应用程序在单独/隔离的AppDomain中运行,而不是单独/隔离的进程。
  2. 本机可执行文件无法存在于AppDomain中。
  3. 继续......

    简而言之,我希望我的网站不会为每个请求生成新进程。因为进程比应用程序域更昂贵。

    编辑2

    我的asp.net mvc应用程序允许用户提交LaTeX输入命令,例如$ax^2+bx+c=0$,以转换为pdf文件,呈现二次方程式。在幕后,这个Web应用程序将生成一个执行pdflatex.exe的进程。 pdflatex.exe的工作是将LaTeX输入命令转换为pdf文档。

2 个答案:

答案 0 :(得分:0)

这不是一项简单的任务,但您可以查看该库Microsoft.Cci.PeReader.dll 可能解析PE头可能指向您需要的信息。

答案 1 :(得分:0)

当“尝试加载非托管动态链接库或可执行文件(例如Windows系统DLL)时,Assembly.LoadFile()抛出BadImageFormatException,就好像它是.NET Framework程序集一样。” 请参阅http://msdn.microsoft.com/en-us/library/system.badimageformatexception.aspx

中的备注和示例