質問

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

次のエラーを受け取ります。

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

私が離れている場合:

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

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

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

役に立ちましたか?

解決

わかりました、それを理解しました:)

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

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施設がそれらをホストしようとするかのように思われ、その結果、ポート競合が発生します。

だから問題はそれでした 名前 構成ファイルのサービスの もっている 実装の完全なタイプ名になること。そうでない場合は、定義されたエンドポイントの行の線に沿って何かを記載するエラーを受信します。したがって、サービス名はです いいえ ウィンザーで指定された名前と同じです。

他のヒント

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

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

.ActAs(new DefaultClientModel(WcfEndpoint.FromConfiguration( <<key In Configuration>> )));
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top