Хорошая ли идея запускать EXE-файл из IIS из исходного кода?

#c# #asp.net #iis #exe

#c# #asp.net #iis #exe

Вопрос:

У меня есть ASP.NET Веб-API, в котором я пытаюсь загрузить ZIP-файл через контроллер — скажем, DownloadZipController .

Для создания этого ZIP-файла мой метод контроллера вызывает заводской метод createandGetZip , который запускает exe-файл и ожидает, пока EXE завершит свое выполнение. Когда EXE создает ZIP-файл, он передается заводскому методу createandGetZip . Это создание ZIP-файла занимает некоторое время — около 2 минут.

Я разместил этот веб-API на сервере IIS с идентификатором AppPool как LOCALSYSTEM.

Мой вопрос: это лучший способ запустить EXE-файл из моего кода, размещенного на сервере IIS? Или есть какой-либо другой способ запустить EXE-файл из кода без указания идентификатора AppPool как LOCALSYSTEM, поскольку я читал, что это может привести к нарушению безопасности.

Пожалуйста, посоветуйте мне наилучший возможный способ или просто способ лучше, чем тот, который я использую в настоящее время.

Комментарии:

1. У вас есть исходный код для exe-файла?

2. Да, у меня есть исходный код EXE. Он был разработан собственными силами.

3. Защита IIS — слишком широкая тема для SO.

4. Что мешает вам просто назначить вашему приложению другой AppPool с идентификатором, отличным от LocalSystem? Существует множество руководств по этому поводу.

5. @ivan_pozdeev Я не могу запустить свой exe-файл без присвоения идентификатора Localsystem моему пулу приложений. Пожалуйста, сообщите, можно ли это сделать каким-либо другим хорошим способом.

Ответ №1:

Я считаю, что на практике это нормально (я часто делаю это с DoScan.exe , сканер вирусов Symantec). Постарайтесь защититься от бесконечного вращения внешнего процесса и ограничить права безопасности пула приложений для EXE-файла, если это важно для вас.

Также, конечно, убедитесь, что вы знаете, что делает EXE-файл.

Комментарии:

1. Спасибо за очень быстрый ответ, но, как я уже упоминал, я предоставляю идентификатор Localsystem своему пулу приложений, только тогда я могу запустить процесс. Так что это нормально для этого. Также я не понял, что вы подразумеваете под внешним приложением, вращающимся вечно. Возможно ли, чтобы вы поделились деталями идентификатора пула приложений и разрешениями безопасности, которые вы предоставляете своему пулу приложений.

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

3. хорошо, я понял, но могу ли я узнать, какой идентификатор пула приложений вы предоставили пулу приложений для запуска DoScan.Exe .