2009-09-01 4 views
1

À moins que je fais quelque chose de mal, la façon dont je suis censé utiliser ConfigurationSection, ConfigurationElement et ConfigurationElementCollection, me obliger à formater ma section de configuration comme ceci:web.config ConfigurationSection personnalisé et verbosité inutiles

<serviceAuthorization> 
    <credentials> 
     <login username="system" password="password" mode="include"> 
      <services> 
       <service type="AxeFrog.Mobile.Service.Security.AuthenticationService, AxeFrog.Mobile.Service" /> 
       <service type="AxeFrog.Mobile.Service.Security.AnotherService, AxeFrog.Mobile.Service" /> 
      </services> 
     </login> 
     <login username="test" password="pass" mode="exclude" /> 
    </credentials> 
</serviceAuthorization> 

I préfèrerait beaucoup si j'avais un peu plus à dire dans le format. Je voudrais formater ma section comme ceci:

<serviceAuthorization> 
    <login username="system" password="password" mode="include"> 
     <service type="AxeFrog.Mobile.Service.Security.AuthenticationService, AxeFrog.Mobile.Service" /> 
     <service type="AxeFrog.Mobile.Service.Security.AnotherService, AxeFrog.Mobile.Service" /> 
    </login> 
    <login username="test" password="pass" mode="exclude" /> 
</serviceAuthorization> 

Est-il possible que je peux obtenir le code XML de la section de configuration et juste lire moi-même?

Répondre

1

Vous pouvez implémenter System.Configuration.IConfigurationSectionHandler et le configurer:

<section name="serviceAuthorization" type="[your-type]"/> 

Ensuite, vous obtenez tout votre section comme XmlNode et peut analyser votre schéma personnalisé.

éditer: ceci est obsolète. voici un new way pour le faire.

+0

Si je comprends bien, IConfigurationSectionHandler a été déprécié –

+0

Vous avez absolument raison. Je l'ai ajouté à ma réponse. –

0

Eh bien, vous pouvez le faire, par exemple:

string docName=System.Web.HttpContext.Current.Server.MapPath("Web.config"); 
XmlDocument configDoc = new XmlDocument(); 
configDoc.Load(docName); 

puis travailler à partir configDoc.

+1

Je connais cette voie; J'espérais juste quelque chose d'un peu moins brut. –