Первоначально я спросил, как записать двоичные данные в Process.StandardInput ( StreamWriter ), поскольку он обрабатывает только символьные данные: ответ должен использовать Process.StandardInput. BaseStream ( Stream ).
Кроме того, поскольку обе трубы могут заполниться (буферы 64 КБ IIUC), я использовал следующую схему:
- Создает поток для записи данных, затем устанавливает флаг,
- Создает поток для чтения всех возвращаемых данных, затем устанавливает флаг,
- Цикл, пока оба флага не установлены, вызывая Thread.Sleep (100).
- Возврат данных, прочитанных из процесса.
Таким образом, кроме хакерского аспекта, заключающегося в том, чтобы поместить исполняемый файл в WebApp (или требовать отдельной установки), это, кажется, работает нормально - но мне все еще нужно провести некоторое тестирование на злоупотребление.