存取資源的安全性信任層級
本主題說明如何針對 System.Transactions 所公開的資源型別限制其存取。
System.Transactions 主要有三種信任層級。 信任層級會依據 System.Transactions 所公開的資源型別,以及在存取這些資源時應該會用到的信任層級,來加以定義。 System.Transactions 提供存取的資源是系統記憶體、共用的所有處理序資源,以及整個系統資源。 層級為:
AllowPartiallyTrustedCallers (APTCA),適用於在單一應用程式定義域內使用交易的應用程式。
DistributedTransactionPermission (DTP),適用於使用分散式交易的應用程式。
永久性資源、組態管理應用程式,以及舊版 Interop 應用程式的完全信任。
注意
您不應該使用模擬內容來呼叫任何登記介面。
信任層級
APTCA (部分信任)
部分信任的程式碼可以呼叫 System.Transactions 組件,因為此組件已使用 AllowPartiallyTrustedCallers 屬性 (APTCA) 標示。 這個屬性基本上會移除 FullTrust 權限集的隱含 LinkDemand (在每個類型的每個公開存取方法上,都會自動放置這個隱含權限)。 然而,部分型別和成員仍舊需要更強勢的使用權限。
APTCA 屬性可讓應用程式在單一應用程式定義域中以部分信任方式來使用交易。 這樣一來就可以使用非擴大規模的交易與變動性登記來處理錯誤。 交易雜湊資料表與使用該交易雜湊資料表的應用程式即是一例。 您可以在單一交易中將資料加入雜湊資料表或從雜湊資料表移除資料。 如果交易稍後復原回來,則所有在該交易底下對雜湊資料表所做的變更都會復原。
DistributedTransactionPermission (DTP)
當 System.Transactions 交易的規模擴大至需由 MSDTC 管理時,System.Transactions 就會要求 DistributedTransactionPermission (DTP) 建立分散式交易。 也就是說,導致交易規模擴大的程式碼 (例如透過序列化或額外的永久性登記作業) 需要被授予 DTP。 原先建立 System.Transactions 交易的程式碼,不一定需要擁有此使用權限。
FullTrust 連結要求
這項權限等級主要是用來限制寫入永久性資源的應用程式權限。 一旦發生失敗,應用程式需要能夠透過交易管理員來復原,以決定交易的最後結果,方便它更新永久資料。 此類型的應用程式我們稱為永久性資源管理員。 SQL 即是典型的這類應用程式類型。
為了啟用復原,此類型的應用程式必須具備永久取用系統資源的能力。 這是因為可復原的交易管理員必須一直記住已經認可的交易,直到它確認所有參與交易的永久性資源管理員都已收到結果告知。 因此,這類型的應用程式需要完全信任,而且不應該在未獲得此信任等級之前貿然執行。
如需永久性登錄和復原的詳細資訊,請參閱將資源登錄為交易中的參與者和執行復原主題。
要擁有完全信任,必須同時具備使用 COM+ 來執行舊版 Interop 工作的應用程式。
下列清單列出了部分信任程式碼所無法呼叫的類型和成員,因為其使用 FullTrust 宣告式安全性屬性裝飾:
PermissionSetAttribute(SecurityAction.LinkDemand, Name := "FullTrust")
只有立即呼叫端需要擁有 FullTrust 權限集,以使用上述類型或方法。