Просто чтобы добавить к двум другим ответам: вам действительно нужно запускать exe-файл с вашего веб-сервера?
Мне приходилось делать это в прошлом, и это почти всегда вариант последнего средства - это значительно ослабляет вашу безопасность (теперь все, что кто-то должен сделать для запуска исполняемых файлов в вашей системе, это найти один недостаток в вашем коде) и имеет целый ряд других проблем (веб-сервер не «вошел в систему» на сервере, поэтому у него нет рабочего стола, олицетворение — настоящая проблема в a$$, чтобы заставить его работать должным образом (при условии, что вы собираетесь запустить исполняемый файл с разными разрешениями для веб-сервера) и т. д.
Если есть какой-либо другой способ достичь цели, он почти наверняка будет проще.
Вариант, который мы выбрали, заключался в том, чтобы иметь новое приложение с конечной точкой WCF, с которой может взаимодействовать веб-сервер. Таким образом, когда кто-то нажимает кнопку, WS вызывает наше приложение через WCF и приказывает ему выполнять различные команды. Таким образом, у вас есть:
- Четкое разделение между веб-кодом и консольным кодом.
- Хитрое консольное приложение не остановит веб-сервер и наоборот
- Если консольное приложение работает долго, это позволяет вам распределять выпуски для веб-сайта/консольного приложения, чтобы вы не убивали приложение в середине выполнения только потому, что вам нужно обновить некоторые CSS и опубликовать.
- Огромные преимущества безопасности — веб-сервер не может запускать исполняемые файлы, даже если они скомпрометированы.
- Приложение WCF сможет тщательно проверять запросы, чтобы решить, допустимы ли они перед выполнением.
Имейте в виду, что как бы вы это ни делали, если кто-то злонамеренный поймет, что происходит, и сможет запустить процесс, он, вероятно, может сделать вам DoS практически без усилий — убедитесь, что этот метод заблокирован НАДЁЖНО.
Изменить: прочитав ваши комментарии выше, я думаю, вы столкнулись с проблемой «рабочего стола». При запуске исполняемого файла с сервера приложение никогда не будет видно вошедшему в систему пользователю, поскольку рабочий стол вошедшего пользователя недоступен из IIS и наоборот. Это очень похоже на проблему наличия графического интерфейса в службе Windows.
Это тоже может быть интересно.
person
Basic
schedule
25.01.2012