2 Stimmen

Silverlight Asp.Net Projektintegration

Ich habe eine Silverlight-Anwendung zu meiner ASP.NET-Website hinzugefügt. Visual Studio erstellte ein neues Silverlight-Projekt und fügte dessen xap dem Ordner ClientBin unter dem Projekt meiner Website hinzu. So sind beide Projekte unter einer Lösung.

Meine Silverlight-App soll eine Xml-Datei lesen und ich konnte sie nicht dazu bringen, auf die Datei aus dem Client-Bin-Ordner unter dem Website-Projekt zuzugreifen. Das Hinzufügen eines Verweises auf dieses Projekt funktioniert nicht, da es heißt, dass nur Verweise auf andere Silverlight-Anwendungen hinzugefügt werden können. Im Moment funktioniert es, wenn die Datei unter dem Silverlight-Projekt liegt, aber nicht, wenn sie unter dem Website-Projekt liegt.

Wie kann ich die Datei aus dem Website-Projekt einlesen?

Die Projektstruktur ist

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

Ich kann auf file1.xml zugreifen mit

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

Ich möchte auf file0.xml zugreifen, aber kein Pfad funktioniert für mich, z.B,

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

und WEBSITE1 ist das Startup-Projekt

0voto

AnthonyWJones Punkte 182582

Sie sollten in der Lage sein, eine Datei aus dem ClientBin-Ordner zu lesen, ohne dass Sie etwas Besonderes tun müssen. Ich würde sagen, dass Sie versehentlich die Silverlight-Anwendung als Startprojekt festgelegt haben. In diesem Szenario möchten Sie, dass die Website das Startprojekt ist und dann entweder die Testseite der Silverlight-Anwendung als Startseite markiert wird oder dass Sie zur Silverlight-Seite navigieren, sobald der Browser gestartet ist.

Modifier

Das Problem, das Sie haben, ist, dass die Load Methode ist synchron, aber Silverlight unterstützt keinen synchronen Zugriff auf Webressourcen. Daher funktioniert die Übergabe einer Uri an die Load-Methode nur, wenn die Uri durch Inhalte in der Xap erfüllt werden kann. Das ist der Grund, warum eine Xml-Datei im Silverlight-Projekt funktioniert, weil sie in der Xap landet.

Um Xml von der Website abzurufen, müssen Sie Folgendes tun:-

 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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X