【问题标题】:Can Process.Start Be Executed concurrently on IISProcess.Start 可以在 IIS 上同时执行吗
【发布时间】:2014-11-20 04:47:56
【问题描述】:

此方法在 IIS 6 或更高版本上运行的 ASP.NET Web 应用程序 (.NET 4.5.2) 中定义:

public string GetValueFromProcess()
{
    string val = string.Empty;
    try
    {
        System.Diagnostics.Process p = System.Diagnostics.Process.Start(GetMyExeFilePath());
        p.WaitForExit();
        val = mainp.StandardOutput.ReadToEnd();
    }
    catch (Exception) { }
    return val;
}

这样的函数是否能够并发毫无问题地执行,或者我会用lock 包装它吗?

显然有些参数应该传递给流程,但为了简单起见,我删除了那部分。

【问题讨论】:

  • 为什么不能同时运行?
  • 因为我不确定 IIS 是否会为每个请求创建一个单独的进程实例,否则它会挂起。我不熟悉 IIS 如何处理这个问题。

标签: c# asp.net .net iis process


【解决方案1】:

该函数会阻塞当前请求,等待“p.WaitForExit();”去完成。并发请求将产生多个进程。您还需要考虑将引发 ThreadAbort 异常的 IIS 请求脚本超时设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多