none
Как запустить .exe файл на сервере IIS 7 из приложения ASP.NET RRS feed

  • Вопрос

  • Доброго времени суток, люди добрые!
    Создал сайт ASP.NET в MVS8.
    Есть событие на кнопке, которое запускает программу(.exe файл) на сервере. 
    В ide программка запускается всё работает, но когда установил в IIS 7 файл не запускается хотя в диспетчере задач процесс висит не понятно почему не отображается на раб. столе...и ничего не происходит даже ошибка не вылазит...просто игнор...
    Может кто сталкивался уже с этим...подскажите что-нибудь...
    пример кода:

    arg = txt.Text;
    ProcessStartInfo pSI = new ProcessStartInfo(@"C:\inetpub\wwwroot\aaa\startDoc2Pdf.exe", arg);

    pSI.WorkingDirectory = @"C:\inetpub\wwwroot\aaa\";
    pSI.UseShellExecute = false;
    pSI.RedirectStandardOutput = true;
    pSI.RedirectStandardInput = true;
    pSI.RedirectStandardError = true;
    Process proc = Process.Start(pSI);

    19 июля 2012 г. 8:09

Ответы

  • По умолчанию, рабочий процесс ASP.NET, в котором хостятся домены приложений запускается от имени пользователя с ограниченными правами. Можете переопределить эти права у себя на локальной машине. Редактируя файл machine.config, раздел processModel. Но это не очень хорошая идея, и на производственных серверах может не работать. Более лучший вариант: можете восаользоваться вот этим решением.

    • Предложено в качестве ответа YatajgaEditor 21 июля 2012 г. 13:33
    • Помечено в качестве ответа Abolmasov DmitryModerator 24 июля 2012 г. 11:11
    19 июля 2012 г. 8:53
    Модератор
  • ".как изменить пользователя пула, чтобы он имел право запускать процессы...и может" - я же высше ответил, что через файлы конфигурации, напрямую редактируя их. Или можно через консоль IIS:

    23 июля 2012 г. 5:39
    Модератор
  • Хорошо буду дальше ковырять...ещё раз благодарю Вас за помощь и удачи Вам...

    Олег

    • Помечено в качестве ответа Soa137 25 июля 2012 г. 2:06
    24 июля 2012 г. 9:33

Все ответы

  • Вероятно дело в пользователе с правами которого запускается IIS.
     
    19 июля 2012 г. 8:14
    Модератор
  • Дак вот что надо сделать...где какую опцию добавить или изменить...уже голову сломал...

    Олег

    19 июля 2012 г. 8:31
  • По умолчанию, рабочий процесс ASP.NET, в котором хостятся домены приложений запускается от имени пользователя с ограниченными правами. Можете переопределить эти права у себя на локальной машине. Редактируя файл machine.config, раздел processModel. Но это не очень хорошая идея, и на производственных серверах может не работать. Более лучший вариант: можете восаользоваться вот этим решением.

    • Предложено в качестве ответа YatajgaEditor 21 июля 2012 г. 13:33
    • Помечено в качестве ответа Abolmasov DmitryModerator 24 июля 2012 г. 11:11
    19 июля 2012 г. 8:53
    Модератор
  • Это что получается надо создать службу Windows Service в данном примере это Starter.exe  и вызывать её из приложения ASP.NET передавая ей параметры...?


    Олег

    19 июля 2012 г. 9:54
  • Для начала надо точно установить ошибку отловив её или try{}catch(ex){} или же она возвращается в старом стиле в Proccess. Вероятнее всего, ошибка будет связанна с пользователем IIS (с пулом, к которому принадлежит сайт). Соответствено есть 2 варианта решения:

    1. Лобовой способ решения - изменить пользователя пула, чтобы он имел право запускать левые процессы.

    2. Сделать службу (отдельный процесс, с отдельным пользователем), WCF, Windows Service или еще с каким-то способом активации.

    21 июля 2012 г. 8:46
  • Это что получается надо создать службу Windows Service в данном примере это Starter.exe  и вызывать её из приложения ASP.NET передавая ей параметры...?


    Олег


    Получается так. Приложение ASP.NET - "лицо без гражданства", с очень ограниченными правами. Если бы это было не так, то на хостиг-серверах можно было вытворять что угодно, а там крутятся сотни таких приложений, поэтому нужен жёсткий контроль. От этого и трудности такие возникают.
    21 июля 2012 г. 13:33
    Модератор
  • Владимир...а можно по подробней...как изменить пользователя пула, чтобы он имел право запускать процессы...и может у Вас есть пример по пункту 2...как это реализовать...

    Олег

    23 июля 2012 г. 3:12
  • Yatajga...воспользовался я вот этим решением  создал консольное приложение Starter.exe  ...и опять в студии оно запускается а на IIS не хочет опять просто игнор...может что-то недопонимаю...

    Олег


    • Изменено Soa137 23 июля 2012 г. 3:19
    23 июля 2012 г. 3:17
  • ".как изменить пользователя пула, чтобы он имел право запускать процессы...и может" - я же высше ответил, что через файлы конфигурации, напрямую редактируя их. Или можно через консоль IIS:

    23 июля 2012 г. 5:39
    Модератор
  • Yatajga...большое спасибо Вам...запустил пул от своего имени(администратора) всё заработало...но я понимаю что это не есть хорошо...придётся или отдельного пользователя создавать и давать ему права только на этот запуск или службу создавать...только вот как пока ещё не представляю как....

    Олег

    23 июля 2012 г. 10:28
  • "но я понимаю что это не есть хорошо" - на серверах где хостятся пара сотен приложений вместе с вашей, да. В этом случае нужен специальный пул с более высокими привелегиями или служба, с такими же правами, но есть провайдеры которые не допускают подобное. Но если скажем у Вас виртуальный выделенный сарвер, и его используете только Вы, то проблем нет. А что именно делает Ваше запущенное приложение, что ему нужны такие высокие привелегии?
    23 июля 2012 г. 10:43
    Модератор
  • в данный момент веб-приложение служит для поиска информации по базе данных(Oracle)...если пользователь нашел, что ему надо, то при выборе этой строки, данные этой строки передаются, как параметры, в другую программу(разработанную в Делфи, просто сторонняя прога), которая при наличии этих параметров создает отчет(.pdf файл)...ну и соответственно появляется ссылка на просмотр данного файла...вот коротко, как-то так...в дальнейшем планируется организовать поиск уже по самим pdf файлам точнее по тексту в этих файлах...правда как это сделать я пока не знаю...

    Олег

    24 июля 2012 г. 2:23
  • Да, то что приложение не ваше, это плохо. Менять, что-либо соответственно не можете. "придётся или отдельного пользователя создавать и давать ему права только на этот запуск или службу создавать..." - да, примерно так и нужно, или использовать виртуальный сервер, только для Вас, но если приложение не большое, заморачиваться с этими настройками тоже отдельная головная боль. "только вот как пока ещё не представляю как" -  о насторйках, правах и правилах наверное лучше будет спросить здесь, у IT специалистов.
    24 июля 2012 г. 7:01
    Модератор
  • Хорошо буду дальше ковырять...ещё раз благодарю Вас за помощь и удачи Вам...

    Олег

    • Помечено в качестве ответа Soa137 25 июля 2012 г. 2:06
    24 июля 2012 г. 9:33
  • Привет. Не забывайте отмечать решение проблемы (с помощью кнопки 'Пометить как ответ'), Спасибо.

    Для связи [mail]

    24 июля 2012 г. 11:12
    Модератор