2010-09-15 81 views
1

我已使用Microsoft強名稱鍵約定編譯程序集並將其標記爲「AllowPartiallyTrusted」。Caspol:從網絡共享上的程序集調用方法

我正在測試從兩個不同的機器對這個程序集的應用程序。 一個正在運行Windows 2003服務器,另一臺正在運行Windows XP Professional。

我能夠從Win 2003服務器調用程序集中的方法,但是當涉及到XP機器時,它會失敗。

我試圖將INTRANET ZONES設置爲「完全信任」,但這並不適用於XP。 XP和2003服務器之間的一個區別是XP是32位的,並且安裝了1-4.0的框架。 2003年只安裝了3.5 SP1。

我是XP機器上的管理員,但沒有在2003機器上工作。 這使我瘋狂。

回答

0

Windows權限應該不重要 - 這是一個代碼訪問安全問題。如果不知道更多關於您遇到的錯誤的信息,則很難診斷問題。 AllowPartiallyTrustedCallersAttribute(APTCA)旨在允許部分受信任的代碼調用完全受信任的代碼,但.NET 4.0安全模型已改變APTCA的工作方式。請參閱此博文for details,但在.NET 4.0中,APTCA程序集標記爲SecurityTransparent,並且不能調用SecurityCritical程序集,這是.NET程序集的默認保護級別。因此,如果.NET 4.0中的APTCA程序集正在執行任何特權操作,如調用SecurityCritical代碼或聲明權限,則它將失敗。您應該考慮將其設置爲SecuritySafeCritical,以便可以通過SecurityTransparent代碼調用並調用SecurityCritical代碼。當然,你需要確保它不能像非APTCA代碼那樣被不可信任的庫所利用。