Почему мой код командной строки c sharp не работает на моем сервере, но работает нормально на моем локальном компьютере - PullRequest
0 голосов
/ 28 июля 2011

Я создал некоторый код для выполнения команды командной строки.На моем компьютере разработки она работает нормально, но когда я пытаюсь запустить код на сервере (Windows 2003, IIS 6), команда не запускается.

Я проверяю путь на сервере и уверен, что он правильный.Я могу получить некоторые данные с сервера (см. Прикрепленное изображение).

server output image

Я думаю, что это может быть проблема с разрешениями.Но я не уверен, где это проверить и как это исправить.Любая помощь будет оценена.

Обновление:

Я запускаю этот код на своих локальных ПК для разработки (Win 7 и Wind XP), и он работает нормально.Но как только я запускаю код на моем сервере Windows 2003, он не работает.

ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe");
processStartInfo.RedirectStandardInput = true;
processStartInfo.RedirectStandardOutput = true;
processStartInfo.UseShellExecute = false;
processStartInfo.CreateNoWindow = true;
Process process = Process.Start(processStartInfo);

if (process != null)
{
process.StandardInput.WriteLine("c:");
process.StandardInput.WriteLine("cd\\");
process.StandardInput.WriteLine("cd C:\\Program Files\\Bank2CSV Pro");

/*This is Dynamic path for our application */

process.StandardInput.WriteLine("bank2csv_pro.exe" + " " + strSavedFilePath + fileName2    + " " + strSavedFilePath + fileNameCsv);

/* This is static path for command prompt*/

process.StandardInput.Close();
string outputString = process.StandardOutput.ReadToEnd(); 

1 Ответ

0 голосов
/ 28 июля 2011

Я провел тестирование и обнаружил, что смог выполнить код, как показано в приведенном выше фрагменте кода, при работе в корневом веб-каталоге веб-сервера.

Так что, в конце концов, похоже, это была проблема с разрешениями. Чтобы дать практический пример того, что я сделал

Я изменил код из этого:

process.StandardInput.WriteLine("cd C:\\Program Files\\Bank2CSV Pro");

к этому коду:

process.StandardInput.WriteLine("cd C:\\Inetpub\\wwwroot\\Bank2CSV Pro");

После этого изменения я смог выполнить команды, которые записывают на диск. Очевидно, проблема заключалась в том, что пользователь IUSR должен иметь разрешение на запись в рассматриваемый каталог. Я мог бы также решить эту проблему, предоставив пользователю ISUR доступ на запись в папку в папке Program Files, но я думаю, что это не очень хорошая практика ...

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