2010-08-13 49 views
1

我創建了一個樣本的Silverlight Web項目System.IO.FileInfo扔訪問被拒絕例外本地文件

和我收到「訪問被拒絕」當我這樣做:

string fileName = "map.gif"; 
FileInfo fileInfo = new FileInfo(fileName); 

如何我可以讓Web項目訪問這個文件夾/文件嗎?

我添加圖像到我的項目,真是一片空白這裏....

回答

1

你不訪問文件您放置在使用FileInfo對象的項目。相反,你創建一個Uri來訪問它。

從您的問題中不清楚您已將該文件放入哪個項目。如果已將其放置在Silverlight項目中,則應以Xap中的內容爲結尾。在這種情況下,你可以使用獲得StreamResourceInfo它: -

StreamResourceInfo gifContentInfo = Application.GetResourceStream(new Uri("map.gif", UriKind.Relative)); 

現在,你可以得到與該文件內容: -

Stream gifStream = gifContentInfo.Stream; 

在另一方面,如果你已經把文件中的網頁項目它將成爲網站上的標準靜態文件。因此,您需要執行典型的WebClient下載才能獲取它。

我認爲你要去這個麻煩,因爲它的一個Gif文件;你知道它們不支持作爲圖像。

0

你需要給到ASP文件訪問.NET用戶

檢查了這一點: http://www.codeproject.com/KB/aspnet/Ahmed_Kader.aspx

或用途,其asp.net爲您提供 的特殊文件夾... APP_DATA

應該有你需要的權利...

+0

問題是更多的Silverlight比ASP相關... – Oren 2010-08-13 18:17:14

0

我假設你正試圖訪問本地文件系統中的文件。

如果是這樣,您不能訪問那樣的文件。 Silverlight沒有您期望的訪問權限。如果您想在運行時將文件添加到Silverlight應用程序中。您需要安裝Silverlight 4,使用提升版的瀏覽器運行瀏覽器。這也有一定的侷限性。您只能訪問「我的文檔」,「圖片」,「音樂」等特殊文件夾中的文件。有關以這種方式訪問​​文件的更多信息。您可以在Channel 9 MSDN中的Silverlight 4高級版本上查看John's tutorials

我會懷疑你的FileInfo的用法了。以下是使用簡單的拖放功能獲取文件數據的示例代碼。

private void list_Drop(object sender, DragEventArgs e) 
{ 
    FileInfo[] files = (FileInfo[])e.Data.GetData(DataFormats.FileDrop); 

    for(int i=0;i<files.Length;i++) 
    textblock.Text += files[i].Name; 
} 

您可以獲取文件的屬性,例如「Name」。你不會遇到任何拒絕訪問錯誤。你不能訪問諸如「DirectoryName」,「FullName」等屬性。原因是出於安全原因它們被聲明爲SecurityCritical屬性。提升權限的好處在於,您可以訪問本地文件系統(特殊文件夾)以無任何例外地訪問FullName和DirectoryName屬性。

希望這有助於

0

@Lucas ..

嘛。你可以使用Silverlight 4.看看this。和this