2012-04-02 2 views
0

Я создаю службу WCF. Сначала у меня был один проект библиотеки WCF и один проект консоли, который ссылался на эту библиотеку. И он отлично работал, когда я использовал «добавить ссылку на службу» в моем проекте клиента, если в служебной библиотеке был действительный файл App.Config.Возможно ли использовать опцию «добавить ссылку на службу», чтобы добавить самообслуживаемую службу в WCF?

Однако теперь я хочу объединить библиотеку сервисов и консольный хост в один проект консоли. В конце концов, предыдущий проект консоли был довольно прост. Но здесь возникает проблема: когда я выбираю «добавить ссылку на службу» и даю конечную точку, определенную в файле App.config нового проекта консоли, он не может найти ссылку на службу. Я принимаю это, потому что служба не будет размещаться по wcfsvchost.exe, когда включена функция ссылки на сервисы добавления (и я думаю, что это имеет смысл). Но я не могу придумать способ заставить его работать. Итак, как я должен добавить ссылку на службу, если мой сервис - это один проект с консольным хостингом?

+0

** Да, конечно! ** Почему вы спрашиваете? Служба должна быть запущена и запущена - тогда вы можете абсолютно «добавить ссылку на службу» для этой службы. В конце концов: это просто служба WCF - как это размещается, абсолютно не имеет отношения к клиенту, вызывающему его ..... –

+0

@marc_s Спасибо. Я забыл упомянуть одно: я попробовал «добавить ссылку на службу» в свою исходную библиотеку услуг (чтобы wcfsvchost запустил эту службу), которая имеет те же файлы и app.config, что и моя объединенная консоль. Но когда я выгрузил эту библиотеку и запустил объединенную консоль (я предполагаю, что эти две службы будут такими же, чтобы предыдущая сгенерированная служебная ссылка также могла использоваться для новой), мой клиент говорит «не может найти конечную точку». Я думаю, это потому, что мне нужно что-то изменить с помощью сгенерированной ссылки на службы, но что это такое? – tete

ответ

0

Самый простой способ для вас - запустить службу WCF, сгенерировать ссылку на службу и затем объединить ее в одно приложение. Все, что вам нужно сделать, это просто изменить адрес в app.config. Но будьте осторожны с этим, так как вы должны изменить адрес для клиентской части, а не серверную часть app.config.

Этот подход, однако, будет трудно поддерживать в будущем, когда вы решите изменить контракт с сервисными данными и восстановить ссылку на службу. Возможно, вы захотите рассмотреть следующее: обернуть ссылку на службу в сборку и использовать сборку вместо этого. Таким образом, вы сможете регенерировать справочную службу по мере необходимости.

+0

Спасибо за помощь. Не могли бы вы уточнить, какое изменение я должен внести, чтобы «изменить адрес в app.config»? Потому что я попробовал ссылку на службу, созданную из моей сервисной библиотеки, которая в основном использует тот же параметр, что и мой объединенный проект консоли. Но когда я запускаю объединенную консоль (я выгрузил библиотеку сервисов, так что wcfsvchost.exe не будет размещать эту версию), которая должна размещать точно такую ​​же службу, что и служебная библиотека, мой клиент говорит, что конечная точка не найдена. Я предполагаю, что это потому, что есть что-то другое, и мне нужно измениться. Но я просто не могу понять, что – tete

+0

@tete Не могли бы вы разместить свой объединенный app.config в вопросе? Вы можете удалить чувствительную информацию. Также может случиться так, что вы отправляете запросы до того, как служба WCF запущена и работает –

+0

, пожалуйста, ознакомьтесь с моим обновлением исходного сообщения. – tete

Смежные вопросы