进程辅助器不能在iis7上工作

本文关键字:工作 iis7 辅助器 不能 进程 | 更新日期: 2023-09-27 18:06:24

让我们以一个场景为例,我开发了一个web应用程序(ASP。. NET MVC),它显示了.xml文件列表,我们选择两个.xml文件进行比较,并使用比较实用程序,如Beyond Compare 3。

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

下面是启动该过程并生成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;
}

进程辅助器不能在iis7上工作

你不能只在web服务器上运行进程。当然,你可以在你的开发机器上做到这一点,因为在那里你必须拥有更多的权限。

点击这个链接,它一定对你有用。它指导通过CGI程序注册,权限授予和运行在IIS启用web服务器。

http://blogs.iis.net/thomad/archive/2010/04/04/how - - - cgi程序下运行iis 7 - 0或者- iis 7 - 5. - aspx

我不太确定,但我想在Stackoverflow上也有人问过类似的问题。

如果CGI程序(如Tigran指出的)不是您的选择(无论出于何种原因)您有两个选项:

  1. 默认情况下,您的网站的应用程序池只能在有限的权限下运行。将网站的应用程序池配置为在本地系统帐户下运行。但是,出于安全原因,我不推荐使用这个选项。按照上面的链接,一步一步地指导如何实现这一点。
  2. 不要更改应用程序池的默认设置。相反,创建一个承载WCF-Service的Windows服务,提供一个服务方法(例如CompareXml)来执行你的控制台应用程序。从网站内部调用WCF-Service的CompareXml方法。

希望,这有帮助。