Как я уже сказал в своем комментарии, для любой серьезной работы я бы обычно рекомендовал не использовать IIS в качестве хоста приложения.У него есть несколько недостатков (он определяет адрес службы, он должен иметь дело с пулами приложений и их переработкой и т. Д.)
Вместо этого я обычно выполняю свои производственные сервисы в режиме самостоятельного размещения, например, в Windows NTоказание услуг.Это дает мне большую гибкость: я полностью контролирую все аспекты, включая адреса, и я могу запускать / останавливать службы по своему усмотрению, и я не имею права перерабатывать пулы приложений.
По сути, вам нужно создать экземпляр ServiceHost
из среды выполнения WCF и присвоить ему класс обслуживания для размещения, а также, необязательно, один (или несколько) базовых адресов, где ваша служба предоставляет конечные точки в.
ServiceHost svcHost = new ServiceHost(typeof(MyWCFService));
// optionally set additional properties here, if needed
svcHost.Open(); // now, the host is open and accepting
Если вы хотите прекратить прослушивание запросов, просто позвоните svcHost.Close()
, и ваш хост службы пропал.
Когда вы упаковываете это в службу NT, обычно вы выполняете настройку и .Open()
хоста службы в методе OnStart
, и вы обрабатываете svcHost.Close()
в методе OnStop
службы NT.
Это приложение, содержащее ServiceHost
, не должнобыть службой NT - особенно для тестирования, всегда очень просто поместить ваш ServiceHost в консольное приложение, запустить его и, таким образом, оживить службу WCF, протестировать / отладить / улучшить, а затем просто закрытьснова консольное приложение.На мой взгляд, гораздо проще, чем копаться в IIS, виртуальных каталогах и тому подобном.
См .: