Служба WCF работает внутри VS, но не одна

#.net #wcf

#.net #wcf

Вопрос:

У меня есть консольное приложение службы WCF. Когда я запускаю ее из Visual Studio, она открывает свой tcp-порт, и я могу использовать ее с веб-сайта, работающего на том же сервере. Однако, когда я запускаю консольное приложение непосредственно из командной строки, оно не открывает порт. Я не получаю никаких ошибок, но netstat не показывает открытый порт и ошибки веб-сайта при вызовах службы.

На сервере работает Windows Server 2003, а брандмауэр Windows выключен.

Какая часть головоломки WCF отсутствует, когда я запускаю консольное приложение вне VS?

Ответ №1:

Вы должны создать ServiceHost .

http://msdn.microsoft.com/en-us/library/system.servicemodel.servicehost.aspx

Visual Studio автоматически создает для вас хост при отладке.

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

1. Спасибо за ваш пост. У меня был ServiceHost, но при проверке, чтобы убедиться в этом, я заметил, что . Open() для нее отсутствовал. Включение этого заставило ее работать.

Ответ №2:

Как сказал Джимми, вам необходимо разместить свой компонент WCF, прежде чем вы сможете использовать его за пределами Visual Studio.

Один из наиболее распространенных и простых способов размещения службы WCF — через IIS:

http://msdn.microsoft.com/en-us/library/ms733766.aspx

Ответ №3:

Если у вас возникает эта проблема, даже если вы создаете ServiceHost внутри своего консольного приложения, то, похоже, вам может потребоваться запустить командную строку с повышенными привилегиями (т. Е. в режиме администратора).