【问题标题】:Process worker is not working on IIS 7进程工作者不在 IIS 7 上工作
【发布时间】:2011-10-31 02:31:45
【问题描述】:

让我们来看一个场景,我开发了一个 Web 应用程序 (ASP.NET MVC),它显示了 .xml 文件的列表,我们选择了两个 .xml 文件进行比较,并使用了像 Beyond Compare 3 这样的比较实用程序。

基本上,我有 Scrapt 文件(Beyond Compare 3 Script),它在 System.Diagnostic.Process 上运行,并针对脚本生成差异报告文件。我想在显示运行时生成的差异报告的进程中使用该脚本。当我从 Visual Studio 运行应用程序时,它运行完美并显示了预期的差异文件,但是当我在我的 IIS Web 服务器上部署此应用程序时,它不会生成差异文件,只是将输入文件显示为输出文件。

Following 是启动进程并生成 Beyond Compare 结果文件作为输出文件的方法。但以下代码在 Visual Studio 开发服务器上运行,但在 IIS 上不起作用(网站部署在 IIS 服务器上)。

public string GenerateSortedXMLFile(string inputfilepath)
{
       string outputfile, inputfile, BCompare, Script;
       inputfile = inputfilepath;
       outputfile = ConfigurationManager.AppSettings["MFxmlSortFilePath"];
       outputfile = outputfile + System.Guid.NewGuid().ToString() + ".txt";
       BCompare = ConfigurationManager.AppSettings["BCompareExe"];
       Script = ConfigurationManager.AppSettings["Script"];

       Process p = new Process
       {
            StartInfo =
                    {
                        FileName = "\"" + BCompare + "\"",
                        Arguments = " " + "\"" + "@" + Script + "\"" + " " + "\"" + inputfile + "\"" + " " + "\"" + outputfile + "\"  /grant BUILTIN\\Users:IIS_IUSRS"
                    }
                };

       p.Start();
       p.WaitForExit();
       p.Close();
       return outputfile;
}

【问题讨论】:

    标签: c# asp.net-mvc iis-7 system.diagnostics beyondcompare3


    【解决方案1】:

    你不能只在网络服务器上运行一个进程。当然,您可以在您的开发机器上执行此操作,因为您必须拥有更多权限。

    点击此链接,它一定对您有用。它指导 CGI 程序注册、权限授予和在启用 IIS 的 Web 服务器上运行。

    http://blogs.iis.net/thomad/archive/2010/04/04/how-to-run-a-cgi-program-under-iis-7-0-or-iis-7-5.aspx

    【讨论】:

      【解决方案2】:

      我不太确定,但我认为在 * 上提出了一个类似的问题。

      如果 CGI 程序(如 Tigran 指出的那样)不适合您(无论出于何种原因) 你有两个选择:

      1. 默认情况下,您网站的应用程序池仅在有限权限下运行。将您网站的应用程序池配置为在本地系统帐户下运行。但是出于安全原因,我不推荐此选项。请按照上面的链接获取有关如何完成此操作的分步指南。
      2. 不要更改应用程序池的默认设置。相反,创建一个托管 WCF 服务的 Windows 服务,该服务提供用于执行控制台应用程序的服务方法(例如 CompareXml)。从您的网站中调用 WCF-Service 的 CompareXml 方法。

      希望,这会有所帮助。

      【讨论】:

        最近更新 更多