Рабочий процесс не работает на IIS 7 - PullRequest
0 голосов
/ 20 августа 2011

Давайте рассмотрим сценарий, я разработал веб-приложение (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;
}

Ответы [ 2 ]

0 голосов
/ 20 августа 2011

Я не совсем уверен, но я думаю, что вопрос о simialr был задан на Stackoverflow .

Если программа CGI (как указал Тигран) вам не подходит (по любой причине) у вас есть два варианта:

  1. По умолчанию пул приложений на вашем сайте работает только с ограниченным разрешением. Настройте пул приложений на вашем веб-сайте для запуска под локальной системной учетной записью. Однако я не рекомендую эту опцию из соображений безопасности. Перейдите по ссылке выше для пошагового руководства о том, как этого добиться.
  2. Не изменяйте настройки по умолчанию для вашего пула приложений. Вместо этого создайте службу Windows, в которой размещается служба WCF, предлагающая метод службы (например, CompareXml) для выполнения вашего консольного приложения. На своем веб-сайте вызовите метод CompareXml службы WCF.

Надеюсь, это помогает.

0 голосов
/ 20 августа 2011

Вы не можете просто запустить процесс на веб-сервере. Конечно, вы можете сделать это на своем компьютере разработчика, так как там у вас должно быть гораздо больше прав.

Перейдите по этой ссылке, она должна быть вам полезна. В нем описывается регистрация программ CGI, предоставление разрешений и запуск на веб-серверах с поддержкой IIS.

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

...