public void Stop() { if (host == null) return; if (host.State == CommunicationState.Opened) host.Close(); host = null; #if NET35 if (discoverer == null) return; discoverer.Stop(); discoverer = null; #endif }
private void CreateServiceHost(IEventService instance) { var guid = Guid.NewGuid(); host = new ServiceHost(instance, GetUri(guid)); host.AddServiceEndpoint( typeof(IEventService), GetBinding(), "EventService"); #if !NET35 var discoveryBehavior = new ServiceDiscoveryBehavior(); host.Description.Behaviors.Add(discoveryBehavior); host.AddServiceEndpoint(new UdpDiscoveryEndpoint()); discoveryBehavior.AnnouncementEndpoints.Add(new UdpAnnouncementEndpoint()); #else discoverer = new Discovery.ServiceDiscoverer(); StartDiscoverer(discoverer, guid); #endif host.Description.Behaviors.Add(new ServiceThrottlingBehavior { MaxConcurrentSessions = 1000 }); host.Description.Endpoints[0].Contract.Operations[0].Behaviors.Add(new EncryptionBehavior { EncryptionKey = encryptionKey }); host.Opened += (s, e) => IsStarted = true; host.Closed += (s, e) => IsStarted = false; }