2009-09-03 5 views
1

У меня есть веб-сайт, который помещает информацию в базу данных mySQL и службу Windows (написанную на VB.Net), которая проверяет db и действия, что там. Однако иногда он останавливается и вместо того, чтобы иметь RDP на сервере, я хочу, чтобы суперпользователи нажали на кнопку, чтобы перезапустить службу. Я могу заставить кнопку сказать, сделать список каталогов c: \ output в тестовый файл, так что проблема «получить команду для выполнения на удаленном сервере» работает. Однако я не могу перезапустить службы. Я предполагаю, что это вещь безопасности (хотя у нее есть полные права на c: \ Я думал, что я уже это сделал). Веб-сайт работает под обычным IUSR_user, так что я делаю что-то действительно глупое или кто-нибудь может объяснить, как заставить службу перезапускаться?Перезапуск службы windows с сайта

Большое спасибо Адриан

+0

Связанный вопрос: http://serverfault.com/questions/7979/starting-and-stopping-services – itsadok

+0

Полагаю, вы исключили, что установили сервис? – recursive

+0

сложно! в основном он разговаривает с маршрутизаторами, которые иногда тайм-аут или отбрасывают мусор. И я использую threading :-) – 2009-09-12 15:21:23

ответ

0

Я бы написать службу, которая перезапускает выбранные услуги и называют, что с моего сайта, просто для удовольствия!

0

Похоже, что you need to give the user permissions по конкретному сервису. Самый простой способ сделать это (на мой взгляд) - использовать subinacl.exe от Windows Resource Kit.

subinacl.exe /service MySQL /Grant=IUSR_user 

Я был бы очень осторожен, делая это на общедоступном веб-сервере. Идентификация и ограничение скорости для кода перезапуска.

+0

Это не публичный взгляд, поэтому проблем нет. Установил его, выполнил команду, как вы показали, но, увы, никакой радости. Показывает сообщение об ошибке, просто ничего не делает :-( – 2009-09-04 09:48:56

0

Используйте класс ServiceController:

http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicecontroller.aspx

Это позволит вам подключиться к имени службы и остановки/запуска.

EDIT: Кроме того, вероятно, вам необходимо, чтобы ваше веб-приложение выдало себя за пользователя с правами на перезапуск службы. Это может быть выполнено с помощью удостоверения личности, выданного в web.config, или запуска веб-приложения в настроенном пуле приложений в IIS. Имейте в виду, что веб-приложение должно работать в том же поле, что и служба.

+0

У вас есть какие-либо образцы web.config, показывающие, как олицетворять кого-то? – 2009-09-12 15:22:43

+0

Это довольно просто. Создайте пул приложений IIS с идентификатором пользователя домена, которого вы хотите использовать бежать как добавить приложение в пул затем в web.config оный:. <идентичность Impersonate = «истинное» /> вашего веб-приложение, то будет работать в качестве пользователя домена, который вы указали в своем приложении пул – XDecker

1

Я думаю, что значительно большая проблема заключается в том, что у вас есть служба, которая задерживается. У вас есть какие-либо журналы или ошибки, которые вызывают службы, которые вы могли бы использовать для диагностики , почему это заглох?

+0

см. комментарий выше !!! – 2009-09-12 15:22:05

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