2011-05-20 8 views
8

Estoy tratando de usar mis archivos de configuración web en Silverlight.Cómo usar los archivos de configuración web en Silverlight

He puesto lo siguiente en web.config:

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

Im tratando de utilizarlos como

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

Sin embargo esto no funciona, da un error "Sólo asignación, llamadas , increment, decrement ... se puede utilizar como una instrucción "

Respuesta

8

No puede leer web.config desde su aplicación Silverlight porque el espacio de nombres de configuración no existe en SL .NET Framework, pero wh por lo que se puede hacer es la siguiente:

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 *** no se puede acceder *** al archivo en el servidor, ¿no es así? ¿Dónde está 'XMLFileInYourRoot.Config'? – Kiquenet

19

No se puede leer web.config de su aplicación de Silverlight, ya que la aplicación de Silverlight se ejecuta en el cliente (en el navegador) y no en el servidor.

Desde su código de servidor se puede acceder con la configuración de aplicaciones

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

pero hay que enviarlos al cliente. Usted podría hacer que mediante el uso initParams

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

Dentro de su código de servidor (Page_Load de Default.aspx) se podía recorrer todos AppSettings y crear el valor para los initParams dinámicamente.

En la aplicación de Silverlight se puede acceder a los parámetros en 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 bucle a través de todos los parámetros y almacenarlos en un diccionario de configuración. Así, tienes la configuración de tu aplicación en la aplicación de Silverlight en el cliente.

Cuestiones relacionadas