IIS 7.5 w3wp.exe для запуска другого процесса - PullRequest
1 голос
/ 24 сентября 2011

У меня есть приложение ASP.NET MVC3, которое работает на IIS. Одно из действий контроллеров, запускающих процесс "cmd / C git clone some-repo".

Мне нужно убедиться, что дочерний процесс запущен под пользователем, для которого уже настроен git. Я использую пул приложений с Identity == My Accout (admin + git is works).

Процессы запускаются нормально, но зависает. Я думаю, что из-за неправильной идентичности, которая управляет им.

У кого-нибудь есть опыт запуска процессов под IIS, вы видели нечто подобное? Как отлаживать такие проблемы?

Ответы [ 2 ]

1 голос
/ 25 сентября 2011

Я думаю, что решение вашего другого вопроса также работает для этого.

После установки олицетворения для моего имени пользователя, подобного этому

<identity impersonate="true" password="o1j2813n" userName="obrad" />

Я попытался запуститьпроцессы из System.Diagnostics.Process.Start из mvc action, и они отображаются под моим именем пользователя в диспетчере задач Windows, поэтому я думаю, что этот ответ будет полезным.

EDIT

Другая часть проблемы - не работает git из-за неправильного способа подачи команды git.Я провел несколько экспериментов и нашел способ клонировать репозиторий git из действия контроллера:

System.Diagnostics.Process.Start(@"C:\Program Files (x86)\Git\bin\git.exe", "clone git://github.com/goranobradovic/go.DB.JournalingBase.git " + @"C:\Users\obrad\Desktop\temp");

Эта команда клонирует репо из git: //github.com/goranobradovic/go.DB.JournalingBase.git в папку temp на моем рабочем столе.

1 голос
/ 24 сентября 2011

То, что я подозреваю, происходит ...

Для каждого пользователя необходимо принять открытый ключ удаленной службы SSH.Вероятно, ваш процесс завис в ожидании, когда кто-нибудь примет открытый ключ с клавиатуры.

В консольном приложении пользователь - это вы, а вы уже приняли его.Как и w3wp, ключ не был принят - ожидая, что он будет принят.

У вас есть несколько вариантов.

  1. Если вы контролируете личностьAppPool от w3wc, вы можете войти в систему под этим пользователем и навсегда принять его самостоятельно.Вы можете использовать такие инструменты, как PsExec , чтобы запустить процесс как системную или сетевую службу.

  2. Использовать другую перегрузку Process.Start.чтобы запустить его как другой пользователь, который уже принял открытый ключ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...