#.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:
Ответ №3:
Если у вас возникает эта проблема, даже если вы создаете ServiceHost
внутри своего консольного приложения, то, похоже, вам может потребоваться запустить командную строку с повышенными привилегиями (т. Е. в режиме администратора).