2011-08-20 72 views
-1

让我们开发一个场景,我开发了显示.xml文件列表的Web应用程序(ASP.NET MVC),并且我们选择了两个.xml文件进行比较,并使用比较实用工具(如Beyond Compare 3)。过程工作人员不在IIS上工作

基本上,我有Scrapt文件(超越比较3脚本),它在System.Diagnostic.Process上运行,并根据脚本生成差异报告文件。我想在显示运行时生成的差异报告的过程中使用该脚本。当我从Visual Studio运行应用程序时,它运行良好,并显示预期的差异文件,但是当我在IIS Web服务器上部署此应用程序时,它不会生成差异文件,只是将输入文件显示为输出文件。

以下是启动进程并生成超越比较结果文件作为输出文件的方法。但是下面的代码在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; 
} 

回答

0

我真的不知道,但我认为一个simialr有人询问Stackoverflow

如果CGI程序(如季格兰指出的)是不是你的选择(无论哪个原因) 你有两个选择:

  1. 默认情况下,您的网站的一个应用池只能用有限的权限运行。将网站的应用程序池配置为在本地系统帐户下运行。不过,我做不建议这个选项,因为安全原因。按照上面的链接一步一步指导如何做到这一点。
  2. 请勿更改应用程序池的默认设置。相反,创建一个Windows服务托管一个WCF服务,提供服务方法(例如CompareXml)来执行您的控制台应用程序。从您的网站内部调用WCF服务的CompareXml方法。

希望,这有助于。