WCF как сервис: изменение файла app.config

#.net #wcf #service #config #restart

#.net #wcf #Обслуживание #конфигурация #перезапуск

Вопрос:

У меня есть WCF, работающий как служба Windows. Я развернул его на сервере (после того, как довольно долго бился головой о клавиатуру).

Последняя проблема: при внесении изменений в app.config (programname.exe.config в каталоге service в разделе program files) его, очевидно, необходимо перезапустить.

Проблема заключается в следующем — когда я вношу изменения в файл конфигурации и пытаюсь перезапустить службу, это выдает мне сообщение «Некоторые службы автоматически останавливаются, если у них нет работы, например …». Я должен полностью удалить службу, переустановить снова, изменить файл конфигурации, а затем запустить службу.

Это кажется невероятно утомительным и ненужным. Я думаю, я должен иметь возможность просто отредактировать файл конфигурации и перезапустить. Существует ли известный конфликт или настройка, на которые мне следует обратить внимание?

Спасибо! -Джейсон

Комментарии:

1. Вы проверили журнал событий на наличие исключений? Есть ли у вас возможность подключить отладчик, чтобы посмотреть, что происходит при перезапуске?

2. К сожалению, я не могу подключить отладчик. Но я проверю журнал событий в следующий раз.

3. Вы редактируете файл .config до или после остановки службы? Мне интересно, не удается ли просто остановить вашу службу, независимо от того, изменен файл конфигурации или нет?

4. Я редактировал файл .config перед остановкой сервиса — держу пари, что это была моя проблема. Спасибо, Ралли!

Ответ №1:

Вместо этого вы могли бы попробовать это.

  • Остановите службу.
  • Измените файл конфигурации в процессе разработки.
  • Повторно разверните проект (скажем, с помощью Build -> Publish)
  • Запустите службу.

Комментарии:

1. Спасибо, но я не могу опубликовать. Это служба Windows, в которой есть проект установки с первичным выводом и установщик проекта — при сборке он создает Setup.msi и Setup.exe файлы, которые распространяются. Недоступно для публикации:-(Я надеюсь найти способ простого редактирования файлов конфигурации после установки без прохождения процесса переустановки и особенно без процесса повторной сборки.

Ответ №2:

Просто введите в него пользовательский хук action dll из вашего msi.

Код в dll (например, искажение файла) будет выполнен после копирования файлов на диск, но до завершения установки, то есть до запуска какой-либо службы.

Ответ №3:

Если это служба Windows, вам необходимо установить новую копию (после удаления предыдущей). В случае служб WCF, опубликованных через IIS, вы можете внести изменения в службу, создать проект, а затем опубликовать его. Если какое-либо другое приложение уже использует ваши службы wcf (конечная точка), то никаких изменений в этом приложении не требуется, и новые измененные службы могут использоваться новым приложением без привязки к предыдущему приложению.