4

Castle WcfFacility を使用して、標準の Wcf 構成ファイル設定を使用するにはどうすればよいですか?

私がそのように登録した場合:

container.Register(
AllTypes.Pick()
    .FromAssemblyNamed("{ServicesAssembly}") // <-- service assembly here
    .If(type => type.Name.EndsWith("Service"))
    .WithService.FirstInterface()
    .Configure(configurer => configurer.LifeStyle.Transient)
    .Configure(configurer => configurer.Named(configurer.Implementation.Name))
    .Configure(configurer => configurer.ActAs(new DefaultServiceModel()))
);

次のエラーが表示されます。

サービス '{name}' にはアプリケーション (非インフラストラクチャ) エンドポイントがありません。

私がオフにする場合:

.Configure(configurer => configurer.ActAs(new DefaultServiceModel()))

構成内の動作が無視されているようです。

ここでの正しい使用法は何ですか?

4

2 に答える 2

6

OK、それを理解しました:)

私はそのように登録します:

container.Register(
AllTypes.Pick()
    .FromAssemblyNamed("{ServicesAssembly}") // <-- service assembly here
    .If(type => type.Name.EndsWith("Service"))
    .WithService.FirstInterface()
    .Configure(configurer => configurer.LifeStyle.Transient)
    .Configure(configurer => configurer.Named(configurer.Implementation.Name))
    .Configure(configurer => configurer.ActAs(new DefaultServiceModel().Hosted()))
);

Hosted()は、私がサービスをホストしていることを示すためにあります。それ以外の場合は、WCFファシリティがそれらをホストしようとし、ポートの競合が発生するようです。

したがって、問題は、構成ファイル内のサービスの名前が実装の完全な型名でなければならないということでしたそうでない場合は、エンドポイントが定義されていないという線に沿って何かを示すエラーを受け取ります。したがって、サービス名はwindsorで指定された名前と同じではありません。

于 2010-04-26T07:25:01.240 に答える
0

あなたはほとんどそこにいます。

あなたはこれを必要とします:

.ActAs(new DefaultClientModel(WcfEndpoint.FromConfiguration( <<key In Configuration>> )));
于 2010-04-23T12:42:09.617 に答える