powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как загрузить произвольный xml?
4 сообщений из 4, страница 1 из 1
Как загрузить произвольный xml?
    #36958085
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используется Silverlight, класс WebClient, пытаюсь загрузить любой внешний публично доступный xml-файл, например: http://google.ru/crossdomain.xml. Загружаю в строку и в дальнейшем как-то использую.

При обращении к входящему потоку в e.Result, возникает исключительная ситуация SecurityException.

Это происходит из-за запрета по умолчанию кросс доменного доступа и решается с помощью помещения clientaccesspolicy.xml в корень папки с веб-сервером. Т.е. я помещаю xml-файл с политикой кросс доменного доступа в корень локального сервера, который стартует вместе с SL.
Это не решает проблему, вызывается все то же исключение.

Кроме WebClient\HttpWebRequest можно также использовать службы. Но напрямую через http должно быть проще и, опять же, с классами работать проще. Пробовал использовать WebClient\HttpWebRequest классы в WinForms - были проблемы только с кодировкой.
Код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
namespace SilverlightApplication8 {
    public partial class MainPage : UserControl {
        public MainPage() {
            InitializeComponent();
            WebClient wc = new WebClient();
            wc.OpenReadCompleted +=
                     new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
            wc.OpenReadAsync(new Uri("http://google.ru/crossdomain.xml", UriKind.Absolute));
        }
        private void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) {
            try {
                Stream stream = e.Result;
                StreamReader reader = new StreamReader(stream);
                string str = reader.ReadToEnd();
            } catch (Exception ex) { MessageBox.Show(ex.ToString()); }
        }
    }
}

SecurityExceptionSystem.Reflection.TargetInvocationException: Неправильный результат из-за исключения, возникшего во время операции. См. описание исключения в InnerException. ---> System.Security.SecurityException ---> System.Security.SecurityException: Ошибка безопасности. в System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult) в System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClass5.b__4(Object sendState) в System.Net.Browser.AsyncHelper.<>c__DisplayClass2.b__0(Object sendState) --- Конец трассировки стека внутреннего исключения --- в System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state) в System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult) в System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result) в System.Net.WebClient.OpenReadAsyncCallback(IAsyncResult result) --- Конец трассировки стека внутреннего исключения --- в System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary() в System.Net.OpenReadCompletedEventArgs.get_Result() в SilverlightApplication8.MainPage.wc_OpenReadCompleted(Object sender, OpenReadCompletedEventArgs e)

clientaccesspolicy.xml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="*">
        <domain uri="*"/>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

Проект прилагаю.
...
Рейтинг: 0 / 0
Как загрузить произвольный xml?
    #36958094
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
XElement xml = XElement.Load(fileName);
...
Рейтинг: 0 / 0
Как загрузить произвольный xml?
    #36958244
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Compositum,

Разумеется, но для этого файл xml должен входить в xap-пакет.
...
Рейтинг: 0 / 0
Как загрузить произвольный xml?
    #36958308
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЭто происходит из-за запрета по умолчанию кросс доменного доступа и решается с помощью помещения clientaccesspolicy.xml в корень папки с веб-сервером. Т.е. я помещаю xml-файл с политикой кросс доменного доступа в корень локального сервера, который стартует вместе с SL.
Это не решает проблему, вызывается все то же исключение.
Вот здесь ошибка - нужно размещать файл политики доступа на целевом сервере, а не на локальном. Заработало.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как загрузить произвольный xml?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]