XmlSecureResolver 建構函式

定義

初始化 XmlSecureResolver 類別的新執行個體。

多載

名稱 Description
XmlSecureResolver(XmlResolver, PermissionSet)

初始化類別的新實例 XmlSecureResolver ,並指定 和 XmlResolverPermissionSet

XmlSecureResolver(XmlResolver, Evidence)

初始化類別的新實例 XmlSecureResolver ,並指定 和 XmlResolverEvidence

XmlSecureResolver(XmlResolver, String)

初始化一個新的類別實例 XmlSecureResolver ,並提供 XmlResolver 和 URL。

備註

這三種建構器提供三種類型的存取限制:

請參閱建構器參考主題以了解這類限制的範例。

XmlSecureResolver(XmlResolver, PermissionSet)

初始化類別的新實例 XmlSecureResolver ,並指定 和 XmlResolverPermissionSet

public:
 XmlSecureResolver(System::Xml::XmlResolver ^ resolver, System::Security::PermissionSet ^ permissionSet);
public XmlSecureResolver(System.Xml.XmlResolver resolver, System.Security.PermissionSet permissionSet);
new System.Xml.XmlSecureResolver : System.Xml.XmlResolver * System.Security.PermissionSet -> System.Xml.XmlSecureResolver
Public Sub New (resolver As XmlResolver, permissionSet As PermissionSet)

參數

permissionSet
PermissionSet

權限集適用於底層 XmlResolver。 在呼叫GetEntity(Uri, String, Type)底層 XML 解析器上的方法之前,會XmlSecureResolver呼叫PermitOnly()權限集上的方法。

範例

以下範例透過自訂權限集建構物件 XmlSecureResolver


public static Object GetFile (String fileURL, XmlResolver resolver) {

  // Generate the default PermissionSet using the file URL.
  Evidence evidence = XmlSecureResolver.CreateEvidenceForUrl(fileURL);
  PermissionSet myPermissions = SecurityManager.ResolvePolicy(evidence);

  // Modify the PermissionSet to only allow access to http://www.contoso.com.
  // Create a WebPermission which only allows access to http://www.contoso.com.
  WebPermission myWebPermission = new WebPermission(NetworkAccess.Connect, "http://www.contoso.com");
  // Replace the existing WebPermission in myPermissions with the updated WebPermission.
  myPermissions.SetPermission(myWebPermission);

  // Use the modified PermissionSet to construct the XmlSecureResolver.
  XmlSecureResolver sResolver = new XmlSecureResolver(resolver, myPermissions);

  // Get the object.
  Uri fullUri = sResolver.ResolveUri(null, fileURL);
  return sResolver.GetEntity(fullUri, null, null);
}

public shared function GetFile (fileURL as String , resolver as XmlResolver) as Object
 
  '  Generate the default PermissionSet using the file URL.
  Dim evidence as Evidence = XmlSecureResolver.CreateEvidenceForUrl(fileURL)
  Dim myPermissions as PermissionSet = SecurityManager.ResolvePolicy(evidence)

  '  Modify the PermissionSet to only allow access to http://www.contoso.com.
  '  Create a WebPermission that only allows access to http://www.contoso.com.
  Dim myWebPermission as WebPermission = new WebPermission(NetworkAccess.Connect, "http://www.contoso.com")
  '  Replace the existing WebPermission in myPermissions with the updated WebPermission.
  myPermissions.SetPermission(myWebPermission)

  '  Use the modified PermissionSet to construct the XmlSecureResolver.
  Dim sResolver as XmlSecureResolver = new XmlSecureResolver(resolver, myPermissions)

  '  Get the object.
  Dim fullUri as Uri = sResolver.ResolveUri(nothing, fileURL)
  return sResolver.GetEntity(fullUri, nothing, nothing)
end function

另請參閱

適用於

XmlSecureResolver(XmlResolver, Evidence)

初始化類別的新實例 XmlSecureResolver ,並指定 和 XmlResolverEvidence

public:
 XmlSecureResolver(System::Xml::XmlResolver ^ resolver, System::Security::Policy::Evidence ^ evidence);
public XmlSecureResolver(System.Xml.XmlResolver resolver, System.Security.Policy.Evidence evidence);
new System.Xml.XmlSecureResolver : System.Xml.XmlResolver * System.Security.Policy.Evidence -> System.Xml.XmlSecureResolver
Public Sub New (resolver As XmlResolver, evidence As Evidence)

參數

evidence
Evidence

用來創造 的 PermissionSet 證據將應用於基礎 XmlResolver。 在 crived PermissionSet 上呼叫PermitOnly()方法,再呼叫GetEntity(Uri, String, Type)底層 XmlResolverXmlSecureResolver

備註

以下是一些可能的情境以及每種情境應提供的證據類型:

  • 如果您在完全信任的環境中工作,請使用您的組件來建立證據。

    Evidence myEvidence = this.GetType().Assembly.Evidence;
    XmlSecureResolver myResolver;
    myResolver = new XmlSecureResolver(new XmlUrlResolver(), myEvidence);
    
    Dim myEvidence As Evidence = Me.GetType().Assembly.Evidence
    Dim myResolver As XmlSecureResolver
    myResolver = New XmlSecureResolver(New XmlUrlResolver(), myEvidence)
    
  • 如果您在半信任的環境中工作,您有來自外部來源的程式代碼或數據,而且您知道外部來源的來源,並具有可驗證的 URI,請使用 URI 來建立辨識項:

    
    Evidence myEvidence = XmlSecureResolver.CreateEvidenceForUrl(sourceURI);
    XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myEvidence);
    
    Dim myEvidence As Evidence = XmlSecureResolver.CreateEvidenceForUrl(sourceURI)
    Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), myEvidence)
    
  • 如果您在半信任的環境中工作,而且您有來自外部來源的程式代碼或數據,但您不知道該來源的來歷,那麼:

    evidence 參數設定為 null。 這不允許存取資源。

    -或-

    如果您的應用程式需要對資源進行一些存取,請向呼叫端要求辨識項。

適用於

XmlSecureResolver(XmlResolver, String)

初始化一個新的類別實例 XmlSecureResolver ,並提供 XmlResolver 和 URL。

public:
 XmlSecureResolver(System::Xml::XmlResolver ^ resolver, System::String ^ securityUrl);
public XmlSecureResolver(System.Xml.XmlResolver resolver, string securityUrl);
new System.Xml.XmlSecureResolver : System.Xml.XmlResolver * string -> System.Xml.XmlSecureResolver
Public Sub New (resolver As XmlResolver, securityUrl As String)

參數

securityUrl
String

用來建立 的 PermissionSet URL 將套用到底層 XmlResolver的 。 在 創造 的 上呼叫,然後先對XmlSecureResolverPermitOnly()底層 XmlResolverGetEntity(Uri, String, Type)PermissionSet

範例

這個範例使用 XmlSecureResolver(XmlResolver, String) 建構子建立 XmlSecureResolver 一個物件,該物件只能存取你的本地內聯網網站。

XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), "http://myLocalSite/");
Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), "http://myLocalSite/")

備註

Important

在 .NET Framework 通用語言執行環境(CLR)上執行的程式碼,與整合於 Microsoft SQL Server 2005 中的 CLR 程式碼,在安全架構上存在差異。 這可能導致為 .NET Framework CLR 開發的程式碼在 SQL Server 整合的 CLR 上運作不同的情況。 當您有以 URL 為基礎的辨識項時,其中一個差異會影響 XmlSecureResolver 類別(也就是當您使用 CreateEvidenceForUrl 方法或建 XmlSecureResolver(XmlResolver, String) 構函式時)。 SQL Server 整合 CLR 的原則解析機制不會使用 UrlZone 資訊。 相反地,它會根據伺服器載入元件時新增的 GUID 來授與許可權。 當您在 SQL Server 整合的 CLR 中使用XmlSecureResolver時,請使用指定的 PermissionSet 直接提供任何必要的證據。

適用於