#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 .