Код C # для запуска командного файла работает в консольном приложении, но тот же код не работает в службе WCF - PullRequest
3 голосов
/ 16 ноября 2010

Этот следующий код довольно прост и работает в консольном приложении. Но по какой-то причине это не работает в службе WCF. Каталог, в котором находится командный файл, имеет полные разрешения. Кто-нибудь может мне помочь? Чего мне не хватает?

    try
        {
            ProcessStartInfo psi = new ProcessStartInfo();

            //specify the name and the arguements you want to pass
            psi.FileName = ConfigurationManager.AppSettings["BatchFileLocation"];
            psi.Arguments = filePath; 

            //Create new process and set the starting information
            Process p = new Process();
            p.StartInfo = psi;

            //Set this so that you can tell when the process has completed
            p.EnableRaisingEvents = true;

            p.Start();

            //wait until the process has completed
            while (!p.HasExited)
            {
                System.Threading.Thread.Sleep(1000);
            }

            //check to see what the exit code was
            if (p.ExitCode != 0)
            {
                logger.Write(p.ExitCode);
            }
        }
        catch (Exception ex)
        {
            logger.Write(ex.Message);
        }

1 Ответ

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

Я предполагаю, что это служба IIS, размещенная на WCF.

Проверьте идентичность, связанную с вашим пулом приложений.

Насколько мне известно, в IIS 7 и 6.0 это NetworkService, который может иметь или не иметь права на пакетный файл, SFTP и т. Д. В 7.5 имеется другая учетная запись: Пул приложений по умолчанию Идентификатор изменен в IIS 7.5 . Также возможно, что ваш пул использует какую-то другую учетную запись, в том числе для конкретной машины, а не учетную запись домена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...