2010-07-28 53 views
2

我在我的ASP.NET網站上添加了一個Silverlight應用程序。 Visual Studio創建了一個新的silverlight項目,並將其xap添加到我的網站項目下的ClientBin文件夾中。所以這兩個項目都在一個解決方案下。Silverlight Asp.Net項目集成

我的Silverlight應用程序應該讀取一個xml文件,我無法使其從網站項目下的客戶端bin文件夾訪問該文件。添加對該項目的引用不起作用,因爲它表示只能添加對其他Silverlight應用程序的引用。現在它的工作時,該文件是在Silverlight項目下,但不是當它在網站項目下。

我該如何讓它從網站項目中讀取文件?

這個項目的結構

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

我可以用

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

我想訪問file0.xml訪問file1.xml但沒有路徑對我的作品,對如

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

和WEBSITE1是啓動項目

+0

如果我下面的asnswer沒有幫助,請張貼您正在使用訪問XML文件中的代碼。 – AnthonyWJones 2010-07-28 14:18:53

回答

0

您應該可以從ClientBin文件夾中簡單地讀取文件,而無需執行任何特殊操作。猜測我會說你不小心將Silverlight應用程序設置爲啓動項目。在這種情況下,您希望網站成爲啓動項目,然後將Silverlight應用程序測試頁標記爲開始頁面,或者在瀏覽器啓動後導航到Silverlight頁面。

編輯

你的問題是,該Load方法是同步的,但Silverlight不支持網絡資源同步訪問。因此,將Uri傳遞給Load方法僅在該Uri可以通過Xap中的內容實現時纔有效。這就是爲什麼Silverlight項目中的Xml文件可以工作,因爲它最終在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 
+0

我使用 XDocument document = XDocument.Load(「chart.xml」); 當silverlight項目中存在chart.xml文件時。從其他項目clientbin訪問文件的路徑是什麼?謝謝 – anon2 2010-07-28 14:21:57

+0

@ anon2:看我的編輯 – AnthonyWJones 2010-07-28 16:01:06

+0

謝謝安東尼,現在另一種解決方案似乎正在工作,如果失敗了,我會按照你提到的方式嘗試。我將SilverlightChart中的file0.xml添加爲鏈接(添加現有項目>添加按鈕「添加爲鏈接」)。在更改項目文件夾時,似乎鏈接是動態更新的,因此理論上這應該起作用 – anon2 2010-07-28 16:13:39