AkashDaniel Ответов: 1

Есть ли какой-либо способ запустить файл .bat на сервере IIS с помощью ASP.NET-что?


Я создал пакетный файл с помощью c#. Он работает в локальном режиме, но когда я развернул его в IIS, он не работает.

Что я уже пробовал:

Мой код:

StreamWriter sw = File.CreateText("C:\\inetpub\\wwwroot\\StarRECONPADSS\\Files\\" + "TESTDEL.bat");
sw.WriteLine("set _p= %-p%");
sw.WriteLine("sdelete _p 7 " + sourcePath + FileName);
sw.Close();


Process p = new Process();
p.StartInfo.RedirectStandardOutput = false;
p.StartInfo.FileName = "C:\\inetpub\\wwwroot\\StarRECONPADSS\\Files\\" + "TESTDEL.bat";
Write(p.StartInfo.FileName);
p.StartInfo.UseShellExecute = false;
p.StartInfo.WorkingDirectory = Environment.CurrentDirectory;
Write(p.StartInfo.FileName);
p.StartInfo.RedirectStandardError = true;
Write("BatchFile: Start() Execution Started");
p.Start();
p.WaitForExit();
Write("BatchFile: WaitForExit() Execution Ended");
p.Dispose();

F-ES Sitecore

"Не работает" не дает никому достаточно информации, чтобы помочь вам. Проверьте, действительно ли процесс запускается, отслеживая список задач. Это может быть проблема с тем, что делает файл bat, может быть, ему нужен доступ к рабочему столу, но он не может этого сделать, может быть, ему нужен доступ безопасности к чему-то, но у него его нет. Кроме того, если вы намереваетесь запустить этот bat-файл на клиенте, то это невозможно.

Dave Kreskowiak

Почему вы используете пакетный файл для удаления файлов? Почему вы чувствуете необходимость использовать Secure Delete на веб-сервере?

Далее, этот пакетный файл выглядит ... трусливый. Вы уверены, что он вообще работает после того, как он был написан?

ZurdoDev

Так что отладьте его. Что ты хочешь, чтобы мы сделали?

1 Ответов

Рейтинг:
0

phil.o

Вы абсолютно уверены, что путь "C:\\inetpub\\wwwroot\\StarRECONPADSS\\Files\\" + "TESTDEL.bat" действительно существовать на сервере Корневой путь IIS по умолчанию может быть изменен, например, чтобы поместить его на отдельный диск. Если иерархия папок не существует на сервере, он не будет автоматически создан пользователем. File.CreateText() метод.
Итак, сначала проверьте, что папка C:\inetpub\wwwroot\StarRECONPADSS\Files фактически существует на сервере, и эта учетная запись службы IIS имеет права доступа к нему.

Более того, поскольку StreamWriter действительно ли реализует IDisposable интерфейс, вам лучше использовать его в using блок; вот так:

using (StreamWriter sw = File.CreateText("C:\\inetpub\\wwwroot\\StarRECONPADSS\\Files\\" + "TESTDEL.bat"))
{
  sw.WriteLine("set _p= %-p%");
  sw.WriteLine("sdelete _p 7 " + sourcePath + FileName); 
}

Модулю записи StreamWriter будет автоматически удаляется в конце using блок, и утилизация его стирает необходимость закрыть его явно.

Кроме того, как правило, это плохая идея-жестко кодировать такие пути в ваших файлах кода. Это обычно приводит к тому, с какими проблемами вы имеете дело. Не будучи Ан ASP.NET специалист, я не могу предоставить специализированные рекомендации о том, как улучшить пути доступа к архитектуре приложения; но у некоторых здесь могут быть ценные советы.