Castle WCF Integration Facility を使用しており、最初の webHttp エンドポイントですべてが正しく機能しています。このエンドポイントが機能するには、エンドポイントで WebHttpBehavior が有効になっている必要があります。私はこれを使用してこれを達成することができました:
container.Register(Component.For<IEndpointBehavior>()
.ImplementedBy<WebHttpBehavior>());
これは、WebHttpBehavior と互換性のない BasicHttpBinding を使用して 2 番目のエンドポイントを有効にしようとすると問題になります。
上記の IEndPointBehavior 登録が特定のエンドポイントにのみ適用されることを指定する方法はありますか?
これは、サービスの完全なインストーラーです。
container.AddFacility<WcfFacility>(f => f.CloseTimeout = TimeSpan.Zero)
.Register(Component.For<IDiagnosticService>()
.ImplementedBy<DiagnosticService>()
.Named("DiagnosticService")
.LifestyleTransient()
.AsWcfService(new DefaultServiceModel()
.Hosted()
.AddEndpoints(WcfEndpoint.BoundTo(new WebHttpBinding()).At("json"))
.AddEndpoints(WcfEndpoint.BoundTo(new BasicHttpBinding()).At("soap"))
.PublishMetadata(o => o.EnableHttpGet())));
container.Register(Component.For<IEndpointBehavior>()
.ImplementedBy<WebHttpBehavior>());