城wcffacility-サービス行動
-
01-10-2019 - |
質問
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>> )));
所属していません StackOverflow