2010-06-26 67 views
0

我使用下面的代碼打開了一個XML文件,以便我可以利用它進行內容管理:安全策略異常試圖訪問文件中的ASP.NET

//Initialize and load xmlDoc 
    XmlDocument XMLDoc = new XmlDocument(); 
    XMLDoc.Load("E:\\foldername\\Content.xml"); 
    FileStream fileStrm = new FileStream("E:\\EightFoldDev\\Content.xml", FileMode.Open); 
    XMLDoc.Load(fileStrm); 
    fileStrm.Close(); 

但是我得到一個錯誤:

「的應用程序試圖執行由安全策略不允許的操作。要授予此應用程序所需的權限,請與系統管理員聯繫或更改配置文件中的應用程序的信任級別。

System.Security。小號ecurityException:對'System.Security.Permissions.FileIOPermission,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'類型權限的請求失敗。「

我一直在網上四處尋找,但一直沒能找到解決的辦法呢。我嘗試將以下內容添加到web.config中,但沒有運氣。

<securityPolicy> 
    <trustLevel name="Full" policyFile="internal"/> 
</securityPolicy> 

它在我的本地機器上正常工作,但是當我將它推到服務器(由WinHost提供的託管)時,出現錯誤。所以我確定我在權限中缺少一些東西。

任何幫助表示讚賞!

+0

順便說一句,你是否意識到你加載'XmlDocument',然後覆蓋它? – 2010-06-26 01:13:35

+1

我已經閱讀過有關在WinHost上安裝DotNetNuke的人的博客,他們有權限錯誤,他們必須將其信任級別設置爲中等級別,然後才能使用。 – N0Alias 2010-06-26 01:23:30

+0

....現在我做了哈哈,這是一個漫長的夜晚。 我來試試你所提到的DaMartyr – CTDev 2010-06-26 01:31:18

回答

1

出於某種原因,在WinHost我必須登錄到IIS(遠程連接使用IIS管理器),設置權限到培養基中,然後背到Full ....不知道爲什麼它是必要的,但它似乎解決我的問題。

另外,我是能夠使用直接路徑沒有問題( 「E:\文件夾\ content.xml文件」)。相對路徑似乎嘗試從C開始:不管我做了什麼。這隻有在調用XMLDocument Load方法時纔會發生。

0

因爲它出現在你的應用程序中運行ASP.NET在部分信任運行(可能是媒體),你不能指定outisde您的應用程序的根文件夾物理路徑。 因此,您需要將其調整爲如下所示: XmlDocument XMLDoc = new XmlDocument(); XMLDoc.Load(Server.MapPath(「〜/ App_Data/Content.xml」));

+0

我實際上嘗試過一個相對路徑,但它沒有'工作。我只是嘗試將Content.xml移動到app_data文件夾並更改代碼以引用它,但沒有運氣。同樣的錯誤 – CTDev 2010-06-26 01:16:46