2010-09-02 3 views
2
  1. Мне нужно запустить исполняемый файл из службы WCF, которая должна работать под той же учетной записью службы, что и служба WCF. Служба WCF размещается в IIS и настроена для работы под определенной учетной записью службы.
  2. Мне также нужно получить дескриптор этого процесса и сохранить его где-нибудь (например, в базе данных), чтобы я мог убить позже, если он работает в течение длительного времени неожиданно.
  3. Я должен иметь возможность запускать несколько экземпляров этого процесса параллельно с разными аргументами.

Возможно ли это, или мне нужно создать службу Windows (при условии, что она делает то же самое, что делает исполняемый файл), и настроить ее с помощью учетной записи и запустить ее из службы WCF? Пожалуйста, дайте мне знать, какое правильное решение для этого. Благодарю.вызывать процесс из службы WCF для запуска под учетной записью службы WCF

ответ

2

Вы должны просто начать новый процесс, используя System.Diagnostics.Process и использовать метод Start. Он будет работать в контексте, в котором он был запущен.

+0

Я думал, что это не так, и в этой статье говорится, что он работает под ограниченными правами http://msdn.microsoft.com/en-us/library/e8zac0ca(VS.90).aspx. В нем говорится, что «код веб-страницы и сервера ASP.NET выполняется в контексте рабочего процесса ASP.NET на веб-сервере. Если вы используете метод« Пуск »на веб-странице или сервере ASP.NET, новый процесс выполняется на веб-сервер с ограниченными разрешениями. Процесс не запускается в том же контексте, что и клиентский браузер, и не имеет доступа к пользовательскому рабочему столу ». не распространяется ли это на службы WCF? – RKP

+0

также любые комментарии по моему второму вопросу? – RKP

0

Если вы хотите получить дескриптор процесса позже, сохраните его ПИД в своей БД или файл. Затем используйте Process.GetProcessById, чтобы получить этот дескриптор.

+1

* [Отклоненное редактирование JustPixelz] * Я не пробовал это, но предполагаю, что он будет работать, как описано. Но если вы используете несколько экземпляров IIS для балансировки рабочей нагрузки, помните, что PID или другая ссылка хороша только на машине, созданном процессом. Кроме того, помните, что процесс, возможно, еще не запущен, когда вы вернетесь, чтобы его убить. Или, что еще хуже, PID может стать другим процессом! –

Смежные вопросы