Нужен ли файл SVC для настройки Castle Wcf Facility для не-HTTP сервисов? - PullRequest
6 голосов
/ 04 ноября 2011

Я в замешательстве по поводу регистрации в замке.

Я прочитал некоторые сообщения в блоге для BasicHttpBinding. Но не удалось найти простой простой пример для настройки net.tcp.

Я хочу разместить службу из консольного приложения ...

Я написал что-то вроде этого ... вы видите здесь проблему?

_container = new WindsorContainer();
_container.AddFacility<WcfFacility>();

_container.Register(Component.For<IMembershipService>().ImplementedBy<MembershipService>()
    .AsWcfService(
        new DefaultServiceModel()
            .AddEndpoints(WcfEndpoint
                    .BoundTo(new NetTcpBinding() { PortSharingEnabled = false })
                    .At("net.tcp://localhost/MembershipService")
            )
            .PublishMetadata()
    )
);

1 Ответ

4 голосов
/ 22 декабря 2011

Если вы хотите опубликовать метаданные, вам нужно включить совместное использование портов (чтобы конечная точка MEX использовала тот же порт, что и обычный порт TCP - вы получите исключение AddressAlreadyInUse, если для этого параметра установлено значение false), и вы, вероятно,необходимо указать порт в URL-адресе (не уверен, какой порт TCP будет использовать в противном случае), поэтому ваш код должен быть (при условии, что порт 8080 подходит для вас):

_container.Register(Component.For<IMembershipService>().ImplementedBy<MembershipService>()
    .AsWcfService(
        new DefaultServiceModel()
            .AddEndpoints(WcfEndpoint
                    .BoundTo(new NetTcpBinding() { PortSharingEnabled = true})
                    .At("net.tcp://localhost:8080/MembershipService")
            )
            .PublishMetadata()
    )
);

Это прекрасно работает при использовании Castle Windsor 3.0.

...