6

キャッスルwcfの施設登録で迷っています。

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()
    )
);
4

1 に答える 1

4

メタデータを公開する場合は、ポート共有を有効にする必要があります (MEX エンドポイントが通常の TCP ポートと同じポートを共有できるようにするため、これを false に設定すると AddressAlreadyInUse 例外が発生します)。 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 を使用すると問題なく動作します。

于 2011-12-22T14:08:56.747 に答える