2011-01-10 4 views
2

Я только начинаю работу с WCF, и я использую более старую статью, опубликованную Мигелем А. Кастро под названием WCF the Manual Way. В статье он упоминает использование ChannelFactory для создания прокси-сервера службы. В статье он показывает этот код для создания прокси-сервера:Руководство WCF и ChannelFactory

IProductAdmin productAdminChannel = new ChannelFactory<IProductAdmin>().CreateChannel(); 

При попытке с помощью этого кода с конечными точками, сконфигурированных в web.config, я получаю сообщения об ошибках, это конечная точка является нулевой. Obvioulsy работает, если я укажу имя конечной точки в конструкторе ChannelFactory, но это не похоже на лучший вариант для повторного использования. Но это также, кажется, работает, если я это сделать:

IProductAdmin productAdminChannel = new ChannelFactory<IProductAdmin>("*").CreateChannel(); 

Является ли это изменение в том, как класс ChannelFactory работы (так как статья является почти 2 лет)? Какова «наилучшая практика» для создания прокси-серверов WCF и повторного использования?

+0

Можете ли вы ** показать нам ** ваш web.config ?? Имеет ли он конечную точку внутри раздела , который ссылается на интерфейс ** IProductAdmin **? Ваш подход выглядит хорошо, насколько я могу судить по вашему коду ... –

+0

Если вы еще этого не сделали - вы также должны посмотреть телешоу DNR с Мигелем Кастро под названием «Extreme WCF» - очень рекомендуется! http://www.dnrtv.com/default.aspx?showNum=122 –

+0

Возможный дубликат [Почему мой ChannelFactory не видит конфигурацию конечной точки?] (http://stackoverflow.com/questions/426041/why-doesnt -my-channelelfactory-see-my-endpoint-configuration) –

ответ

2

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

Я использую маршрут («*») уже несколько лет, и это хороший способ пойти, если у вас будет только одна конечная точка для каждого типа.

+0

Полезно знать - спасибо за ваш ответ! – Doug

+0

Есть ли какая-либо документация по этому вопросу? –