/// <summary> /// Starts the console server in a new thread. /// </summary> public void Start() { // init DB storage this.storage = new PersistentStorage(this.storagesInfo.DbConnectionString); // init log readers this.eventLogReader = new EventLogReader(this.storagesInfo.LogsDirectory, this.serviceName); this.traceLogReader = new TraceLogReader(this.storagesInfo.LogsDirectory, this.serviceName); ObjectConfigurator.Configurator.CustomItemTypes.Add(new TokenSelectionConfigurationItemType()); ObjectConfigurator.Configurator.CustomItemTypes.Add(new XRouter.Common.Xrm.XrmUriConfigurationItemType()); ObjectConfigurator.Configurator.CustomItemTypes.Add(new UriConfigurationItemType()); UpdatePluginsInApplicationConfiguration(); // create WCF service on a new thread Exception exception = null; Thread wcfHostThread = new Thread(delegate(object data) { try { this.wcfHost = new ServiceHost(this, new Uri(this.uri)); // set binding (WebService - SOAP/HTTP) WSHttpBinding binding = new WSHttpBinding(); binding.MaxReceivedMessageSize = int.MaxValue; binding.ReaderQuotas = new XmlDictionaryReaderQuotas() { MaxBytesPerRead = int.MaxValue, MaxArrayLength = int.MaxValue, MaxStringContentLength = int.MaxValue }; // set endpoint this.wcfHost.AddServiceEndpoint(typeof(IConsoleServer), binding, "ConsoleServer"); // set metadata behavior ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); smb.HttpGetEnabled = true; smb.HttpGetUrl = new Uri(this.metadataUri); this.wcfHost.Description.Behaviors.Add(smb); foreach (var b in this.wcfHost.Description.Behaviors) { if (b is System.ServiceModel.Description.ServiceDebugBehavior) { var sdb = (System.ServiceModel.Description.ServiceDebugBehavior)b; sdb.IncludeExceptionDetailInFaults = true; } } // open connection this.wcfHost.Open(); } catch (Exception e) { exception = e; } }); wcfHostThread.Start(); wcfHostThread.Join(); if (exception != null) { throw exception; } }
public void Start(string dbConnectionString, IEnumerable<GatewayProvider> gatewayProviders, IEnumerable<ProcessorProvider> processorProviders) { storage = new PersistentStorage(dbConnectionString); ApplicationConfiguration config = GetConfiguration(); #region Prepare componentsAccessors foreach (GatewayProvider gatewayProvider in gatewayProviders) { GatewayAccessor accessor = new GatewayAccessor(gatewayProvider.Name, gatewayProvider.Gateway, config); componentsAccessors.AddOrUpdate(accessor.ComponentName, accessor, (key, oldValue) => accessor); } foreach (ProcessorProvider processorProvider in processorProviders) { ProcessorAccessor accessor = new ProcessorAccessor(processorProvider.Name, processorProvider.Processor, config); componentsAccessors.AddOrUpdate(accessor.ComponentName, accessor, (key, oldValue) => accessor); } #endregion xmlResourceManager = new XmlResourceManager(storage); dispatcher = new Dispatching.Dispatcher(this); }