/// <summary> /// /// </summary> public static void RefreshServices() { ServiceConfigurationCollection svcList = null; foreach (ServiceProviderElement provider in _ProviderSection.Providers) { _Repository.Remove(provider.Name); if (provider.ProviderType == ServiceProviderType.xml) { svcList = XmlServiceConfigurationManager.GetAllServices(provider.SourceInfo); } if (provider.ProviderType == ServiceProviderType.sqldatabase) { svcList = DatabaseServiceConfigurationManager.GetAllServices(provider.ApplicationId, provider.SourceInfo); } try { //Se agrega try cath debido a que un subproseso pueda intentar agregar un item y aexistente _Repository.Add(provider.Name, svcList); } catch (Exception) { } } }
///date:2013-03-02 No se utilizara la actualizacion //private static FileSystemWatcher watcher; /// <summary> /// Obtiene todos los servicios del proveedor de metadata /// </summary> /// <param name="provider">Proveedor de la metadata</param> /// <returns></returns> public static ServiceConfigurationCollection GetAllServices(ServiceProviderElement provider) { ServiceConfigurationCollection svcList = null; //Si no esta cargado el provider en el repositorio if (!_Repository.ContainsKey(provider.Name)) { #region xml ///date:2013-03-02 No se utilizara la actualizacion if (provider.ProviderType == ServiceProviderType.xml) { //{ svcList = XmlServiceConfigurationManager.GetAllServices(provider.SourceInfo); } // //Habilito FileSystemWatcher para detectar cualquie cambio sobre la metadata // watcher = new System.IO.FileSystemWatcher(); // watcher.Filter = provider.SourceInfo; // watcher.Path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location; // watcher.EnableRaisingEvents = true; // watcher.Changed += new FileSystemEventHandler(watcher_Changed); //} #endregion #region sqldatabase if (provider.ProviderType == ServiceProviderType.sqldatabase) { svcList = DatabaseServiceConfigurationManager.GetAllServices(provider.ApplicationId, provider.SourceInfo); } #endregion try { ///Se agrega try cath debido a que un subproseso pueda intentar agregar un item y aexistente _Repository.Add(provider.Name, svcList); } catch (Exception) { } } else { svcList = _Repository[provider.Name]; } return(svcList); }
///date:2013-03-02 No se utilizara la actualizacion ///// <summary> ///// Si algun cambio ocurre en el archivo de metadata de algun proveedor xml ///// </summary> ///// <param name="sender"></param> ///// <param name="e"></param> //static void watcher_Changed(object sender, FileSystemEventArgs e) //{ // try // { // //Busco todos los providers que esten asociados al mismo archivo. Esta es una situacion muy rara pero podria darce // foreach (ServiceProviderElement provider in _ProviderSection.Providers) // { // if (e.Name.Equals(provider.SourceInfo) && provider.ProviderType == ServiceProviderType.xml) // ReloadAllServices(provider); // } // } // catch (TechnicalException ex) // { // Fwk.Logging.Event ev = new Event(); // ev.LogType = EventType.Error; // ev.Machine = ex.Machine; // ev.User = ex.UserName; // String str = string.Concat( // "Se intento modificar la metadata de servicios y se arrojó el siguiente error \r\n", // Fwk.Exceptions.ExceptionHelper.GetAllMessageException(ex), // "\r\n la metadata se encuentra en: \r\n", // e.FullPath); // ev.Message.Text = str; // Fwk.Logging.StaticLogger.Log(Fwk.Logging.Targets.TargetType.WindowsEvent, ev, null, null); // } //} /// <summary> /// Este metodo elimina quita la lista de servicios del provider en el repositorio deservicios y /// los vuelve a cargar desde su origen /// </summary> /// <param name="provider">Proveedor de metadata</param> static void ReloadAllServices(ServiceProviderElement provider) { ///date:2013-03-02 No se utilizara la actualizacion //_Repository.Remove(provider.Name); if (provider.ProviderType == ServiceProviderType.xml) { ServiceConfigurationCollection svcList = XmlServiceConfigurationManager.GetAllServices(provider.SourceInfo); // Habilito FileSystemWatcher para detectar cualquie cambio sobre la metadata //watcher = new System.IO.FileSystemWatcher(); //watcher.Filter = provider.SourceInfo; //watcher.Path = System.Reflection.Assembly.GetExecutingAssembly().Location; //watcher.EnableRaisingEvents = true; //watcher.Changed += new FileSystemEventHandler(watcher_Changed); } }