Freigeben über


Überprüfen des ADO.NET-Codezugriffs mit Sicherheitsberechtigungen

In teilweise vertrauenswürdigen Szenarien können Sie mit der SqlClientPermissionAttribute-Eigenschaft für bestimmte Methoden im Code festlegen, dass eine bestimmte Codezugriffssicherheits-Berechtigung erforderlich ist. Wenn diese Berechtigung nicht für den Code vorliegt, wird eine Ausnahme ausgelöst, bevor der Code ausgeführt wird.

Hinweis   Da der .NET Framework-Datenprovider für OLE DB und der .NET Framework-Datenprovider für ODBC nicht für teilweise vertrauenswürdige Szenarien aktiviert sind, kann der Test für eine bestimmte Berechtigung möglicherweise erfolgreich durchgeführt werden, der Code schlägt jedoch zur Laufzeit mit einer SecurityException fehl.

Der folgende Code zeigt beispielsweise eine Methode, für die eine bestimmte Verbindungszeichenfolge erforderlich ist. Wenn diese Verbindungszeichenfolge nicht zulässig ist, wird eine Ausnahme ausgelöst, und die Methode wird nicht ausgeführt.

Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Security
Imports System.Security.Permissions

Public Class Sample

  <SqlClientPermissionAttribute(SecurityAction.Demand, ConnectionString := " Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;")> _
  Private Shared Sub OpenConn()
    Dim testConn As SqlConnection = New SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;")
    testConn.Open()
    Console.WriteLine("The calling method has been granted sufficient permission to access the database.")
    testConn.Close()
  End Sub

  Public Shared Sub Main() 
    Try
      OpenConn()
    Catch e As SecurityException
      Console.WriteLine("The calling method has not been granted sufficient permission to access the database.")
    End Try
  End Sub
End Class
[C#]
using System;
using System.Data;
using System.Data.SqlClient;
using System.Security;
using System.Security.Permissions;

public class Sample
{

  [SqlClientPermissionAttribute(SecurityAction.Demand, ConnectionString = " Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;")]
  private static void OpenConn()
  {
    SqlConnection testConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;");
    testConn.Open();
    Console.WriteLine("The calling method has been granted sufficient permission to access the database.");
    testConn.Close();
  }

  public static void Main() 
  {
    try
    {
      OpenConn();
    }
    catch (SecurityException)
    {
      Console.WriteLine("The calling method has not been granted sufficient permission to access the database.");
    }
  }
}

Siehe auch

Schreiben von sicherem ADO.NET-Code | Codezugriffssicherheit