Приложение не работает с рабочего веб-сервера - PullRequest
2 голосов
/ 15 мая 2011

Мне нужно запустить инструмент с нашего внутреннего сайта. Есть несколько входных данных, которые пользователь предоставит из пользовательского интерфейса, и затем я хочу запустить инструмент с учетными данными пользователя. Мой код работает нормально, когда я запускаю его с локального компьютера, но когда я развертываю его на производственном сервере и пытаюсь выполнить его оттуда, он ничего не запускает.

Вот мой код, любые советы будут с благодарностью.

            System.Diagnostics.ProcessStartInfo PSI = new System.Diagnostics.ProcessStartInfo(@"D:\run.bat");             
            PSI.UserName = "username";
            PSI.Domain = "domain";
            System.Security.SecureString securePwd = new System.Security.SecureString();
            string password = "password";
            foreach (char c in password)
            {
                // Append the character to the password.
                securePwd.AppendChar(c);
            }
            PSI.Password = securePwd;
            PSI.UseShellExecute = false;
            process.StartInfo = PSI;
            PSI.Arguments = SiteId.Text + " " + WebServiceUrl.Text + " " +LogFile.Text;
            process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            process.Start();

Ответы [ 2 ]

1 голос
/ 15 мая 2011

Первый:

  • Проверьте личность пула приложений (дополнительные настройки).
  • Переключите удостоверение на «system» и посмотрите, запускается ли пакетный файл из веб-приложения.

Если это так:

  • Измените удостоверение обратно на сетевую службу,
  • Убедитесь, что ваш пакетный файл имеет разрешения на выполнение, примененные для пользовательской сетевой службы (или какой бы идентификации вы ни выбрали)

Еслиэто не так:

  • Попробуйте открыть файл с вашим кодом и добавить в конец какой-нибудь безвредный текст.
  • Если это работает, вы можете, по крайней мере, исключить разрешения и проблемы с возможностью просмотра веб-приложений.
0 голосов
/ 16 мая 2011

Я хочу закрыть эту ветку, так как моя проблема с запуском приложения с рабочего сервера решена.Но я столкнулся с проблемой запуска этого приложения с использованием определенного имени пользователя и пароля.Он всегда запускается с любым идентификатором, установленным в apppool.Так что сейчас, если я использую только эту строку, она работает с идентификатором пула приложений по умолчанию

Process.Start("notepad");

Но если я использую эту строку кода, он даже не запускает блокнот на этом сервере

            string password = "XXXXX";
            System.Security.SecureString securePwd = new System.Security.SecureString();
            foreach (char c in password)
            {
                // Append the character to the password.
                securePwd.AppendChar(c);
            }
            Process.Start("notepad", "username", securePwd, "domain");

Я собираюсь задать отдельный вопрос по этому вопросу.Спасибо всем, кто ответил.

...