Интеграция проекта Silverlight Asp.Net - PullRequest
2 голосов
/ 28 июля 2010

Я добавил приложение Silverlight на свой веб-сайт ASP.NET. Visual Studio создала новый проект silverlight и добавила свой xap в папку ClientBin под проектом моего сайта. Таким образом, оба проекта находятся под одним решением.

Предполагается, что мое приложение Silverlight читает файл XML, и мне не удалось получить к нему доступ из файла клиентской корзины в проекте веб-сайта. Добавление ссылки на этот проект не работает, поскольку в нем говорится, что можно добавить только ссылки на другие приложения Silverlight. Сейчас он работает, когда файл находится в проекте silverlight, а не когда он находится в проекте веб-сайта.

как я могу заставить его читать файл из проекта сайта?

Структура проекта

WEBSITE1 (solution)
 -WEBSITE1 (project)
  -ClientBin
   -file0.xml
   -silverlightchart.xap
 -SilverlightChart
   -file1.xml

Я могу получить доступ к file1.xml, используя

XDocument document = XDocument.Load("file1.xml");

Я хочу получить доступ к file0.xml, но мне не подходит ни один путь, например,

XDocument document = XDocument.Load("~/ClientBin/file0.xml");

и WEBSITE1 - стартовый проект

1 Ответ

0 голосов
/ 28 июля 2010

Вы должны быть в состоянии прочитать файл из папки ClientBin достаточно просто, не делая ничего особенного. Я бы сказал, что вы случайно установили приложение Silverlight в качестве стартового проекта. В этом сценарии вы хотите, чтобы веб-сайт был стартовым проектом, затем либо пометьте тестовую страницу приложений Silverlight как начальную страницу, либо перейдите на страницу silverlight после запуска браузера.

Редактировать

Проблема в том, что метод Load является синхронным, но Silverlight не поддерживает синхронный доступ к веб-ресурсам. Следовательно, передача Uri в метод Load будет работать только в том случае, если этот Uri может быть выполнен содержимым в Xap. Вот почему XML-файл в проекте silverlight работает, потому что он попадает в Xap.

Чтобы получить Xml с сайта, вам нужно сделать следующее: -

 WebClient client = new WebClient();
 client.DownloadStringCompleted += (s, args) =>
 {
     XDocument document = XDocument.Load(args.result);
     SomeFunctionToContinueWithDocumentProcess(document);
 }
 client.DownloadStringAsync(new Uri("file0.xml", UriKind.Relative);
 // code exits here but _document won't be loaded yet
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...