|
WCF на WIN-службе как консоль
|
|||
---|---|---|---|
#18+
День добрый! Имеется вин-служба. По ( http://usanov.net/2149-c-zapusk-windows-servisov-kak-konsolnyx-prilozhenij/comment-page-1#comment-52657) я ее запускаю как консоль. Все замечательно работает. но на моей вин-службе еще хостится WCF сервис. Он выполняет передачу команд из внешних источников этой вин-службе. Обращается он следующим образом: Код: c# 1. 2. 3. 4. 5. 6.
Это работает, когда служба устанавливается как служба) но если она запускается как консоль, то это уже не прокатывает. Служба уже не служба) и метод GetServices() ее не находит. Подскажите, как сделать такое же, только чтобы можно было и как с консолью работать? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2012, 09:23 |
|
WCF на WIN-службе как консоль
|
|||
---|---|---|---|
#18+
Sky Dragon, сумбурно написал. "это работает" не понятно, что это "это" ? ты пытаешься из консоли поднять службу или что? Вообще ты говроишь, что servicecontroller не находит твоей службы, потому что ты не установил службу. И ты сомневаешься в правильности такой логики? и не понятно , что такое "сделать такое же" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2012, 11:11 |
|
WCF на WIN-службе как консоль
|
|||
---|---|---|---|
#18+
AlexeiK, прошу прощения за непонятность) имеется вин-служба, на которой хостится WCF-сервис. Этот WCF может передавать службе запросы на команду(пример обращения в оде). Все это работает, когда служба устанавливается именно как служба(через инсталлятор или командную строку с помощью installutil вроде). Но теперь хочется запусть эту вин-службу как консоль и точно так же обращаться к ней через WCF сервис, который на ней же и хостится. Но в этом случае при обращении WCFa он не находит в servicecontroller эту самую службу. Он и не должен в ней находиться. Логика верная) Я хочу узнать теперь способ, как выполнить команду этой моей службы через WCF. На что надо замеенить этот код: Код: c# 1. 2.
чтобы WCF нашел мою службу, но запущенную как консоль. Надеюсь, стало понятнее )) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2012, 11:42 |
|
WCF на WIN-службе как консоль
|
|||
---|---|---|---|
#18+
Sky Dragon, как может WCF найти службу WCF? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2012, 12:08 |
|
WCF на WIN-службе как консоль
|
|||
---|---|---|---|
#18+
AlexeiK, WCF ищет вин-службу) На которой он хостится. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2012, 12:21 |
|
WCF на WIN-службе как консоль
|
|||
---|---|---|---|
#18+
Sky Dragon, а для чего он так должен делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2012, 12:23 |
|
WCF на WIN-службе как консоль
|
|||
---|---|---|---|
#18+
AlexeiK, чтобы вызвать выполнение команды вин-службы. У службы есть методы OnStart, OnStop. Пауза. А еще есть protected override void OnCustomCommand(int command). С помощью него можно заставить службу выполнять еще какие то действия. Вот WCF сервис и вызывает этот метод вин-службы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2012, 12:31 |
|
WCF на WIN-службе как консоль
|
|||
---|---|---|---|
#18+
Sky Dragon, ничего не понимаю. WCF может хостится где угодно, например в IIS или в ServiceHost. В свою очередь ServiceHost у вас находится в Windows службе - так? И это все работает если вы ее устанавливаете как службу. Но теперь вы хотите запустить Windows службу просто как консольное приложение, так? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2012, 12:32 |
|
WCF на WIN-службе как консоль
|
|||
---|---|---|---|
#18+
netivan, все так, значит все поняли ) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2012, 12:40 |
|
WCF на WIN-службе как консоль
|
|||
---|---|---|---|
#18+
Sky Dragon, а как вы обращаетесь тогда когда служба не в консоли? Тут тоже самое. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2012, 12:40 |
|
WCF на WIN-службе как консоль
|
|||
---|---|---|---|
#18+
netivan, public void WinServExecuteCommand(int command) { ServiceController sc = ServiceController.GetServices().Where(e => e.ServiceName == "MyWinService").Single(); sc.ExecuteCommand(command); } это код в WCF-сервисе, который вызывает выполнение команды вин-службы. Вообще говоря, сейчас служба то установлена на компе, но не запущена из менеджера служб. Я ее запускаю из консоли. Поэтому вызов метода sc.ExecuteCommand(command); кидает эксепшен, что служба не запущена. то есть я думаю, если вин-службу удалить вообще, то он просто не найдет ее. Выдаст null в лямбда-выражении ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2012, 12:47 |
|
WCF на WIN-службе как консоль
|
|||
---|---|---|---|
#18+
Sky Dragon, ну и? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2012, 13:35 |
|
WCF на WIN-службе как консоль
|
|||
---|---|---|---|
#18+
AlexeiK, что ну и? Вопрос в том, как получить доступ к вин-службе, запущенной как консоль, чтобы отправить запрос на выполнение ее команды. Уже собственно даже WCF роли никакой и не играет... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2012, 14:17 |
|
WCF на WIN-службе как консоль
|
|||
---|---|---|---|
#18+
Sky DragonAlexeiK, что ну и? Вопрос в том, как получить доступ к вин-службе, запущенной как консоль, чтобы отправить запрос на выполнение ее команды. Уже собственно даже WCF роли никакой и не играет... ежели у вас консольное приложение, то это уже по любому не вин-сервис, а по тому получать к нему доступ нужно другим способом, например через тот же WCF ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2012, 14:21 |
|
|
start [/forum/topic.php?fid=19&fpage=15&tid=1397201]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 238ms |
total: | 358ms |
0 / 0 |