public void UseHttpBinding() { var ahost = new ServiceHost(typeof(AnnouncementService)); var aendpoint = new AnnouncementEndpoint(new CustomBinding(new HttpTransportBindingElement()), new EndpointAddress("http://localhost:4989")); var ib = new InspectionBehavior(); object state = new object(); ib.RequestReceived += delegate { InspectionBehavior.State = state; return(null); }; aendpoint.Behaviors.Add(ib); ahost.AddServiceEndpoint(aendpoint); ahost.Open(); try { Assert.IsTrue(ib.DispatchBehaviorApplied, "#1"); var b = new ServiceDiscoveryBehavior(); b.AnnouncementEndpoints.Add(new AnnouncementEndpoint(new CustomBinding(new HttpTransportBindingElement()), new EndpointAddress("http://localhost:4989"))); IServiceBehavior sb = b; var host = new ServiceHost(typeof(TestService)); var se = host.AddServiceEndpoint(typeof(ITestService), new BasicHttpBinding(), new Uri("http://localhost:37564")); var bc = new BindingParameterCollection(); sb.AddBindingParameters(host.Description, host, host.Description.Endpoints, bc); sb.Validate(host.Description, host); // ... should "validate" not "apply dispatch behavior" do "add host extension" job? I doubt that. var dse = host.Extensions.Find <DiscoveryServiceExtension> (); Assert.IsNotNull(dse, "#2"); sb.ApplyDispatchBehavior(host.Description, host); // The IEndpointBehavior from ServiceDiscoveryBehavior, when ApplyDispatchBehavior() is invoked, publishes an endpoint. se.Behaviors [0].ApplyDispatchBehavior(se, new EndpointDispatcher(new EndpointAddress("http://localhost:37564"), "ITestService", "http://tempuri.org/")); host.Open(); try { Assert.AreEqual(state, InspectionBehavior.State, "#3"); } finally { host.Close(); } } finally { ahost.Close(); } }
public void UseHttpBinding () { var ahost = new ServiceHost (typeof (AnnouncementService)); var aendpoint = new AnnouncementEndpoint (new CustomBinding (new HttpTransportBindingElement ()), new EndpointAddress ("http://localhost:4989")); var ib = new InspectionBehavior (); object state = new object (); ib.RequestReceived += delegate { InspectionBehavior.State = state; return null; }; aendpoint.Behaviors.Add (ib); ahost.AddServiceEndpoint (aendpoint); ahost.Open (); try { Assert.IsTrue (ib.DispatchBehaviorApplied, "#1"); var b = new ServiceDiscoveryBehavior (); b.AnnouncementEndpoints.Add (new AnnouncementEndpoint (new CustomBinding (new HttpTransportBindingElement ()), new EndpointAddress ("http://localhost:4989"))); IServiceBehavior sb = b; var host = new ServiceHost (typeof (TestService)); var se = host.AddServiceEndpoint (typeof (ITestService), new BasicHttpBinding (), new Uri ("http://localhost:37564")); var bc = new BindingParameterCollection (); sb.AddBindingParameters (host.Description, host, host.Description.Endpoints, bc); sb.Validate (host.Description, host); // ... should "validate" not "apply dispatch behavior" do "add host extension" job? I doubt that. var dse = host.Extensions.Find<DiscoveryServiceExtension> (); Assert.IsNotNull (dse, "#2"); sb.ApplyDispatchBehavior (host.Description, host); // The IEndpointBehavior from ServiceDiscoveryBehavior, when ApplyDispatchBehavior() is invoked, publishes an endpoint. se.Behaviors [0].ApplyDispatchBehavior (se, new EndpointDispatcher (new EndpointAddress ("http://localhost:37564"), "ITestService", "http://tempuri.org/")); host.Open (); try { Assert.AreEqual (state, InspectionBehavior.State, "#3"); } finally { host.Close (); } } finally { ahost.Close (); } }