2010-08-07 4 views
2

J'utilise actuellement xml comme fichier de configuration pour mon application silverlight. Je n'ai aucun problème à lire le fichier, mais maintenant que j'ai besoin de mettre à jour le fichier via le web (de préférence silverlight comme l'aperçu des couleurs de police, taille etc), la seule méthode que je pensais est de générer le fichier entier l'existant grâce au téléchargement.Meilleure suggestion pour le fichier de configuration externe

Existe-t-il un moyen plus simple de le faire?

+0

Hmm ... si vous avez besoin de le changer sur la client, et le télécharger sur le serveur - ne pourriez-vous pas simplement mettre vos paramètres de configuration dans une table de base de données au lieu d'un fichier, et mettre à jour ces paramètres sur le serveur? –

+0

merci, mais ces paramètres pour ma config incluront la connexion de base de données au serveur de base de données qui peut être hébergé dans un autre com. Il y a parfois des règles comme l'absence d'hébergement de mon propre serveur de base de données/fichier. Par conséquent, les paramètres devront être dans un fichier externe –

+0

@C_Rance: Vous pouvez utiliser un "dictionnaire" pour le faire. Sur le serveur, vous allez effectuer l'édition du fichier, sur le client SL vous venez d'envoyer une commande de mise à jour comme 'UpdateConfiguration (" FontSize ", 45615);'. Ce qui devrait être capable de prendre dans un tableau de paires de valeurs aussi bien. Reuploading le fichier entier pourrait être plus facile cependant. Le bonus pour la "méthode dictioanaire" est que vous pourriez facilement implémenter la validation des mises à jour individuellement au lieu de valider via xsd. –

Répondre

1

Eh bien, trouvé ma propre réponse, partage ici aussi. Quand je lis le fichier xml, j'utilise linq pour xml. Donc, il y a une option pour doc.save() donc en faisant ceci:

System.Xml.Linq.XDocument doc = System.Xml.Linq.XDocument.Parse(s); 

System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
System.IO.StringWriter sr = new System.IO.StringWriter(sb); 
doc.Save(sr); 
string ss = sb.ToString();//result 
sr.Close(); 

J'ai un fichier xml enregistré dans l'art. Ensuite, en utilisant OpenWriteCompleted du client Web, j'ai utilisé

Stream outputStream = e.Result; 
byte[] fileContent = Encoding.UTF8.GetBytes(ss); 
outputStream.Write(fileContent, 0, fileContent.Length); 
outputStream.Close(); 

L'utilisation OpenWriteAsync du client Web, l'URI sera le uri de mon gestionnaire générique. l'intérieur du gestionnaire générique

FileStream fs = File.Open(context.Server.MapPath("~/ClientBin/" + "test.txt"), FileMode.Create); 

byte[] buffer = new byte[4096]; 
int bytesRead; 
while ((bytesRead = context.Request.InputStream.Read(buffer, 0, buffer.Length)) != 0) 
{ 
    fs.Write(buffer, 0, bytesRead); 
} 
fs.Close(); 

crédit à l'auteur (Nipun Tomar) @ comme la plupart des idées venaient de son site

http://www.c-sharpcorner.com/UploadFile/nipuntomar/FileUploadsilverlight03182009030537AM/FileUploadsilverlight.aspx

Questions connexes