Проблема сохранения XML-файла в веб-проекте в Silverlight - PullRequest
0 голосов
/ 19 февраля 2011

У меня есть приложение, которое читает файл XML для получения информации о проектах и ​​отображает их в сроки.Пользователь имеет возможность изменять и добавлять проекты, поэтому я хочу сохранить этот XML-файл.

У меня есть приложение Silverlight, которое отображает данные, и веб-проект, в котором размещен файл XML в его папке ClientBin.Приложение получает файл XML с помощью класса WebClient:

WebClient dataSource = new WebClient();
dataSource.OpenReadCompleted += dataSource_OpenReadCompleted;
dataSource.OpenReadAsync(new Uri("ProjectData.xml", UriKind.Relative));

Затем в методе dataSource_OpenReadCompleted оно получает поток из объекта e.Result и считывает его в объект XDocument, который я анализирую с помощью LINQ.Это отлично работает.

Теперь я хочу сохранить свои изменения обратно в веб-проект.У меня есть измененный XML в объекте XDocument, готовый к работе ... и я не уверен, как написать обратно.

Существует метод WebClient.OpenWriteAsync, но я не уверен, как его использовать.Поиск в Google не дает четких результатов.

Спасибо,

Андрей

Ответы [ 2 ]

0 голосов
/ 23 февраля 2011

Спасибо за предложение kurtnelle, это также сработает. Я полагаю, что напишу, каково было мое решение для тех, кто наткнулся на этот вопрос.

Нельзя использовать OpenWriteAsync так же, как вы используете OpenReadAsync, потому что по соображениям безопасности Silverlight не может записывать напрямую в файловую систему.

Я закончил с использованием метода HTTPHandler в веб-проекте. Я создал файл с именем XMLHandler.ashx, который прослушивал вызов веб-клиента. В приложении Silverlight я вызвал webclient.UploadStringAsync с URI веб-проекта и файлом XML в качестве строки данных. Когда HTTPHandler слышит это, он сохраняет его в клиентском бине. Работает отлично!

0 голосов
/ 19 февраля 2011

Код Silverlight запускается на клиенте, поэтому ...

Вы можете попробовать создать веб-сервис, который принимает данные XML и имя файла. Затем попросите этот веб-сервис записать файл обратно в файловую систему. Также убедитесь, что вы используете блокировки для файла, чтобы несколько пользователей не пытались записывать в файл одновременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...