2

J'ai un service WF avec une activité personnalisée et un concepteur personnalisé (WPF). Je veux ajouter une validation qui vérifiera la présence de certaines valeurs dans le fichier web.config.Comment lire le fichier Web.Config dans un concepteur d'activités personnalisées dans un service de flux de travail WF4

Lors de l'exécution, je peux surcharger void CacheMetadata(ActivityMetadata metadata) et ainsi je peux faire la validation heureusement là en utilisant System.Configuration.ConfigurationManager pour lire le fichier de configuration.

Puisque je veux aussi faire cela au moment du design, je cherchais un moyen de le faire dans le designer.

Répondre

3

Ok j'ai une solution:

string GetWebConfigXml() { 

     string configXml = null; 

     Window window = null; 
     ProjectItem project = null; 
     ProjectItem configFile = null; 

     try { 
      EnvDTE.DTE dte = Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(DTE)) as DTE; 
      if(dte == null) return null; 

      project = dte.Solution.FindProjectItem(dte.ActiveDocument.FullName); 
      configFile = (from ProjectItem childItem in project.ProjectItems 
          where childItem.Name.Equals("web.config", StringComparison.OrdinalIgnoreCase) 
          select childItem).FirstOrDefault(); 

      if (configFile == null) return null; 

      if (!configFile.IsOpen) window = configFile.Open(); 
      var selection = (TextSelection)configFile.Document.Selection; 
      selection.SelectAll(); 
      configXml = selection.Text; 
     } finally { 

      //Clean up the COM stuff 

      if (window != null) { 
       window.Close(vsSaveChanges.vsSaveChangesNo); 
       window = null; 
      } 

      if (configFile != null) { 
       configFile = null; 
      } 

      if (project != null) { 
       project = null; 
      } 
     } 
    } 
    return configXml; 
} 

Note: Ne pas oublier que vous aurez probablement besoin d'une charge de bateau des prises try ici

Questions connexes