2012-06-20 46 views
0

我有一個XAML瀏覽器應用程序,最終將放置在服務器上,但是我目前正在從我的Documents文件夾測試它。我試圖從本地讀取XML文檔,但我被卡在XmlReader.Create(); 當我試圖使用我的XML文檔時,拋出了一個SecurityException,所以我嘗試使用以下內容來授予對XML文件的讀取權限:在C#中爲XAML瀏覽器應用程序設置讀取本地XML文件的權限

FileIOPermission fpa1 = new FileIOPermission(FileIOPermissionAccess.Read, @"C:\Users\User1\Documents\Visual Studio 2010\Projects\WpfBrowserApplication2\WpfBrowserApplication2\XMLDoc1.xml"); 
xReader = XmlReader.Create(@"C:\Users\User1\Documents\Visual Studio 2010\Projects\WpfBrowserApplication2\WpfBrowserApplication2\XMLDoc1.xml" 

錯誤消息如下:

A first chance exception of type 'System.Security.SecurityException' occurred in mscorlib.dll 
Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=[tokennumber]' failed. 

是FileIOPermission的正確的類使用,以實現與一個XmlReader讀取權限?

+0

也許作爲一種解決方法您可以讓用戶將XML上傳到應用程序,而不是讓應用程序嘗試從磁盤讀取它? – ekolis

+0

理想情況下,我希望應用程序管理XML文件,並最終讀取和寫入可用於創建對象並將其加載到應用程序中的各種屬性,以便用戶不必對XML文件執行任何操作(也不會擁有文件來創建初始對象)。該應用程序將刪除用戶在XML文檔中輸入任何內容的需要。 – FlyingMolga

回答

0

FileIOPermission類用於檢查您是否有權限,不設置它。

IE:

try 
{ 
    FileIOPermission perf = new FileIOPermission(FileIOPermissionAccess.Read, @"C:\Users\jbeaulac\Documents\test.xml"); 
    perf.Demand(); 
} 
catch (Exception ex) 
{ 
    MessageBox.Show("Not enough permission, blah blah blah."); 
    return; 
} 


var reader = XmlReader.Create(@"C:\Users\jbeaulac\Documents\test.xml"); 
/// ... 

從XBAP應用程序,你不能隨意亂用該用戶的文件,除非你的應用程序是完全信任。

項目屬性 - >安全 - >這是一個完全信任的應用程序

另外,如果你打算使用XBAP這個文檔非常值得一讀:

http://msdn.microsoft.com/en-us/library/aa970910.aspx

相關問題