Давайте рассмотрим сценарий, я разработал веб-приложение (ASP.NET MVC), которое показывает список .xml
файлов, и мы выбираем два .xml
файла для сравнения и используем утилиту сравнения, например Beyond Compare 3.
По сути, у меня есть файл Scrapt (Beyond Compare 3 Script), который работает на System.Diagnostic.Process
и генерирует файлы отчетов о различиях по сценарию.Я хочу использовать скрипт в процессе, который показывает отчет о разнице во время выполнения.Когда я запускаю приложение из Visual Studio, оно отлично работает и показывает ожидаемый файл различий, но когда я развертываю это приложение на своем веб-сервере IIS, оно не создает файл различий, а просто показывает входной файл в качестве выходного файла.
Ниже приведен метод, который запускает процесс и генерирует файл результатов Beyond Compare в качестве выходного файла.Но следующий код работает на сервере Visual Studio Development, но не работает на IIS (развертывание веб-сайта на IIS Server).
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;
}