Verifica dell'accesso di codice ADO.NET tramite le autorizzazioni di protezione

Per gli scenari ad attendibilità parziale, è possibile identificare nel codice metodi particolari quali la richiesta di un determinato privilegio di protezione dall'accesso di codice specificando l'opportuna proprietà SqlClientPermissionAttribute. Se il privilegio non è consentito per il codice, verrà generata un'eccezione prima dell'esecuzione del codice.

Nota   Poiché il provider di dati .NET Framework per OLE DB e il provider di dati .NET Framework per ODBC non possono essere utilizzati in scenari ad attendibilità parziale, è possibile che il test di un particolare privilegio riesca, ma l'esecuzione del codice verrà interrotta con una SecurityException.

Nel codice che segue, ad esempio, viene mostrato un metodo per il quale risulta necessaria una determinata stringa di connessione. Se tale stringa di connessione non è ammessa, verrà generata un'eccezione e il metodo non verrà eseguito.

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.");
    }
  }
}

Vedere anche

Scrittura di codice ADO.NET protetto | Protezione per l'accesso al codice