Процесс C# ничего не возвращает

Я работаю с Process, и у него странное поведение. Мне нужно выполнить код с помощью программы Process my WebSections.exe. Интересно, когда я передаю неправильные параметры, он показывает результат, что он неправильный, когда я передаю правильные параметры, он ничего не показывает, как будто он вообще ничего не выполняет. Итак, параметры для моей программы - это WebSections.exe f (файл .xml). Но если я вызываю с теми же параметрами, что и в коде, но прямо из командной строки, это работает.

А также я прокомментировал .ExitCode, потому что он показывает: «System.Exception: программа возвращена с кодом ошибки 2 на простой странице». Но с комментариями вроде работает.

        Process p;

        ProcessStartInfo psi = new ProcessStartInfo();

        psi.FileName = "C:\\inetpub\\WebSections\\Program\\WebSections.exe";

        psi.Arguments = "f  C:\\Users\\HrchM\\Desktop\\Program\\Current_Diagram\\diagramResult.xml";

        psi.WorkingDirectory = "C:\\inetpub\\WebSections\\TempFolder";

        psi.UseShellExecute = false;

        psi.CreateNoWindow = true;

        psi.RedirectStandardInput = true;

        psi.RedirectStandardOutput = true;

        psi.RedirectStandardError = true;

        p = Process.Start(psi);

        try
        {
            string output = p.StandardOutput.ReadToEnd();

            p.WaitForExit(60000);

            /* if (p.ExitCode != 0)// returns 255 when it can’t write to the temp folder (C:\inetpub\WebSections, CZ-CRM\IIS_IUSRS, Modify, replace all child objects)
                throw new Exception("Program returned with error code " + p.ExitCode); */



            ViewData["Content"] = output.ToString();
        }
        catch (Exception ex)
        {
            ViewData["Content"] =  ex.ToString();
        }
        finally
        {
            p.Close();
            p.Dispose();
        }

Взгляните сюда: symantec.com/connect/articles/…2: Система не может найти указанный файл. Насколько я вижу, вы используете ASP.NET MVC, то есть размещены в IIS. Если это законный IIS, а не экземпляр разработки, он будет работать как служба, а ваш код будет выполняться под идентификатором пула приложений. Итак: вы уверены, что у удостоверения пула приложений есть все разрешения файловой системы для выполнения этого процесса со всеми файлами, которые он должен использовать?

ZorgoZ 22.02.2019 09:08

Я уверен, что использую ту же программу (WebSections.exe), но с другими параметрами в приложении, и все работает нормально.

user10452005 22.02.2019 09:11

Вы говорите: с другими параметрами. Тогда это означает, что проблема связана с параметрами эти. Осторожно: вы передаете путь к файлу на рабочий стол пользователя. Это недоступно даже для администраторов, если это явно не разрешено. Просто в качестве пробы: скопируйте этот файл по пути, например c:\temp, где каждый может его найти, убедитесь, что он доступен для чтения (и записи, если это необходимо вашему приложению) всем, и попробуйте оттуда.

ZorgoZ 22.02.2019 09:17

Хм... кажется, у меня проблема с файлом .xml. У меня есть пример .xml, и он работает с этим файлом примера, но не работает с динамически созданным файлом. Я не понимаю, какая между ними разница. И самое смешное, что мой динамически созданный файл работает, если я вызываю WebSections.exe прямо из CMD, а не через C# Process....

user10452005 22.02.2019 09:41

Попробуйте запустить cmd от имени удостоверения пула приложений и/или добавьте ведение журнала в WebSections.exe, если это ваш код.

ZorgoZ 22.02.2019 09:44

Вы имеете в виду вызов cmd вместо WebSections.exe? Ну, теперь у него бесконечная загрузка..

user10452005 22.02.2019 10:02

Нет. Просто чтобы увидеть, как WebSections.exe работает под идентификатором, в котором он действительно должен работать, запустите cmd под идентификатором пула приложений, который вы используете в IIS для своего приложения, и выполните ту же команду, из которой вы уже запускали команд. На этот раз будет работать не под вашей личностью, а под пулом приложений.

ZorgoZ 22.02.2019 10:05

Извините, если я вас не понимаю или поясняю. Вы хотите, чтобы я вызвал cmd с Process и передал туда свой WebSections.exe?

user10452005 22.02.2019 10:13

Нет!!! Вариант 1: runasss64.com/nt/runas.html Вариант 2: найдите cmd.exe в меню «Пуск», щелкните его правой кнопкой мыши, выберите Запуск от имени другого пользователя, укажите учетные данные пользователя пула приложений. Затем запустите файл WebSections.exe.

ZorgoZ 22.02.2019 10:25

Нашел в чем проблема, не понравился мой путь внутри xml... Сорри за тупость :( И правда спасибо за помощь.

user10452005 22.02.2019 10:44
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
10
242
0

Другие вопросы по теме