2010-08-07 2 views
2

В настоящее время я использую xml в качестве файла конфигурации для приложения silverlight. У меня нет проблем с чтением файла, но теперь, когда мне также требуется обновить файл через веб-интерфейс (желательно silverlight, как будет отображаться предварительный просмотр цветов шрифта, размер и т. Д.), Единственным методом, который, как я думал, является создание всего файла и перезапись существующий через загрузку.Лучшее предложение для внешнего файла конфигурации

Есть ли более простой способ сделать это?

+0

Хм ... если вам нужно изменить его на клиент и загрузить его обратно на сервер - не могли бы вы просто поместить свои настройки конфигурации в таблицу базы данных вместо файла и обновить эти настройки на сервере? –

+0

спасибо, но эти настройки для моей конфигурации будут включать подключение базы данных к серверу базы данных, которое может быть размещено в другом ком. В некоторых случаях существуют такие правила, как отсутствие хостинга моего собственного файла базы данных/сервера базы данных. Поэтому настройки должны быть во внешнем файле –

+0

@C_Rance: для этого вы можете использовать «способ словаря». На сервере вы выполните редактирование файла, на SL-клиенте вы просто отправляете команду обновления, например 'UpdateConfiguration (« FontSize », 45615);'. Который должен иметь возможность принимать и пары пар значений. Однако перезагрузка всего файла может быть проще. Бонус за «диктационный способ» заключается в том, что вы можете легко реализовать проверку обновлений отдельно, вместо проверки через xsd. –

ответ

1

Ну, нашел мой собственный ответ, поделившись здесь тоже.

Когда я прочитал xml-файл, я использую linq для xml. Таким образом, есть возможность для doc.save() Так, делая это:

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(); 

Я получил сохраненный файл XML в сс. Затем OpenWriteCompleted с помощью веб-клиента, я использовал

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

Использование OpenWriteAsync веб-клиента, то URI будет УИР моего общего обработчика. Внутри общего обработчика

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(); 

кредит автора (Nipun Томар) @, как большинство идей пришло с его сайта

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

Смежные вопросы