2011-05-20 22 views
8

Sto cercando di utilizzare i miei file di configurazione Web in Silverlight.Come utilizzare i file di configurazione Web in Silverlight

ho messo il seguente nel file web.config:

<configuration> 
    <appSettings> 
    <add key="FileHeader" value="file://***.com/Builds/"/> 
    <add key="WebHeader" value="http://***.com/dev/builds"/>  
    </appSettings> 

Im cercando di usarli come

string temp= System.Configuration!System.Configuration.ConfigurationManager.AppSettings.Get("FileHeader"); 

Tuttavia non funziona, dà un errore "Solo assegnazione, le chiamate , incremento, decremento ... può essere usato come una frase "

risposta

8

Non è possibile leggere web.config dall'applicazione Silverlight perché lo spazio dei nomi di configurazione non esiste in SL .NET Framework, ma a si può fare è questo:

public static string GetSomeSetting(string settingName) 
     { 
      var valueToGet = string.Empty; 
      var reader = XmlReader.Create("XMLFileInYourRoot.Config"); 
      reader.MoveToContent(); 

      while (reader.Read()) 
      { 
       if (reader.NodeType == XmlNodeType.Element && reader.Name == "add") 
       { 
        if (reader.HasAttributes) 
        { 
         valueToGet = reader.GetAttribute("key"); 
         if (!string.IsNullOrEmpty(valueToGet) && valueToGet == setting) 
         { 
          valueToGet = reader.GetAttribute("value"); 
          return valueToGet; 
         } 
        } 
       } 
      } 

      return valueToGet; 
     } 
+0

SL *** non può accedere *** al file nel server, no? Dov'è 'XMLFileInYourRoot.Config'? – Kiquenet

19

Non è possibile leggere web.config dalla vostra applicazione Silverlight, perché l'applicazione Silverlight viene eseguito sul client (nel browser) e non sul server.

dal codice del server è possibile accedere a impostazioni di app con

string temp = Configuration.ConfigurationManager.AppSettings["FileHeader"]; 

ma bisogna inviarli al client. Si potrebbe fare che utilizzando initParams

<param name="initParams" value="param1=value1,param2=value2" /> 

All'interno del codice del server (Page_Load di Default.aspx) si potrebbe scorrere tutti AppSettings e creare il valore per gli initParams in modo dinamico.

In applicazione Silverlight è possibile accedere ai parametri in caso Application_Startup:

private void Application_Startup(object sender, StartupEventArgs e) 
{   
    this.RootVisual = new Page(); 
    if (e.InitParams.ContainsKey("param1")) 
     var p1 = e.InitParams["param1"]; 
} 

o scorrere tutti i parametri e memorizzarli in un dizionario di configurazione. In questo modo hai le impostazioni dell'app nell'applicazione Silverlight sul client.

Problemi correlati