Database Blog

Tutorial & Tips sui principlai RDBMS: MySQL, MS SQL Server, Oracle, IBM DB2, etc...

MySql Connector DLL .NET in medium trust

venerdì 16 aprile 2010

pictures/Logo-mysql.jpg Molti provider di domini in hosting (tra cui Aruba...) consentono di
utilizzare, in ambienti con .NET Framework, librerie DLL di
terze parti solo se queste vengono compilate in modalità "medium trust".



Un tipico caso, fondamentale se utilizzate MySQL come RDBMS per i vostri
database, è quello del componente MySql.Data.dll,
ovvero del MySQL Connector: il data provider per eccellenza per
accedere e gestire database MySQL tramite .NET Framework (ASP.NET).


Ecco i passi necessari per compilare ed utilizzare correttamete il Data provider
MySQL connector:

  1. Procurarsi i sorgenti del Data Provider da:
    >> http://dev.mysql.com/downloads/connector/net/ (richiede registrazione gratuita)
    oppure direttamente dal mirror:
    >> http://cn.releases.ubuntu.com/mysql/Connector-Net/
    Effettuate il dowload dell'ultima versione disponibile del package "src".
    (attualmete siamo al mysql-connector-net-6.3.1-src.zip).
  2. Scompattate il package su una vostra directory ed aprite la soluzione
    MySQLClient.sln con Visual Studio.
    (per la versione 6.3.x è necessario Microsoft Visual Studio Team System 2008).
  3. Rimozione dei progetti non necessari:
    La soluzione contiene diversi progetti NON tutti necessari al nostro scopo:
    ottenere la DLL MySql.Data.dll in modalità "mediu-trust".
    Rimuovete tutti i progetti (installer, test projects,...) tranne i seguenti:
    • Mysql.Data
    • Mysql.Web
  4. Per una compilazione senza errori su entrambi i progetti "superstiti" aprite i files:
    "Properties" >> AssemblyInfo.cs
    e commentare l'ultima riga contentente:
    [assembly: AssemblyKeyName("ConnectorNet")]
  5. Lanciate un build e incrociate le dita ;)
  6. Firmate la soluzione con un vostro file .snk in quanto è necessario firmare l'assembly con uno "Strong Name".
    Maggiori dettagli sulla firma degli assembly su:
    http://msdn.microsoft.com/en-us/library/xc31ft41.aspx
  7. Per utilizzare le DLL appena create nella vostra directory "bin\debug" però non
    abbiamo ancora finito, infatti per configurare opportunamente il Data Provider è necessario
    settare opportunamente il vostro file web.config presente nella root del vostro sito.
  8. Se siete in Hosting non potrete accedere al file machine.config pertanto è necessario
    dichiarare il nuovo Data Provider all'interno del vostro web.config con le seguente sezione:
    <system.data> 
    <DbProviderFactories> 
    <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" 
    description=".Net Framework Data Provider for MySQL" 
    type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, 
        Version=6.3.1.0, Culture=neutral, PublicKeyToken=??????????" /> 
    </DbProviderFactories> 
    </system.data>
    
    La sezione andrà inserita prima della vostra sezione "connectionStrings".
    Il valore del parametro PublicKeyToken è determinabile tramite la registrazione e successiva
    deregistrazione della DLL MySQL.Data.dll nella GAC del vostro ambiente .NET.
    Tramite i seguenti comandi dalla shell di Visual Studio:
    Posizionatevi sulla dir contenete la MySQL.Data.dll ed eseguite il comando:
    gacutil -i MySQL.Data.dll
    Dopodichè eseguite la deregistrazione tramite:
    gacutil -u MySQL.Data > PublicKeyToken.txt
    Otterrete un file di testo contenete il parametro cercato:
    Microsoft (R) .NET Global Assembly Cache Utility.  
     Version 2.0.50727.42
    Copyright (c) Microsoft Corporation.  All rights reserved.
    
     Assembly: MySql.Data, Version=6.3.1.0, Culture=neutral,
     PublicKeyToken=13b67ce9e090fefa, processorArchitecture=MSIL
     Uninstalled: MySql.Data, Version=6.3.1.0, Culture=neutral,  
     PublicKeyToken=13b67ce9e090fefa, processorArchitecture=MSIL
     Number of assemblies uninstalled = 1 
     Number of failures = 0<br>
    
    

  9. Finalmente non vi rimane che configurare nel web.config la vostra stringa di connessione, ad esempio:
    <connectionStrings>
    <add name="MySqlConnectionString" 
    connectionString="server=127.0.0.1; 
     User Id=Nome_Utente; database=Nome_DB;password=Tua_PWD;
     "providerName="
    MySql.Data.MySqlClient" />  
     </connectionStrings>
    

    E buona programmazione! ;)

    PS: Se non disponete degli strumenti necessari suddetti e volete una copia della DLL, eccola qui: MySql.Data.dll in medium trust, versione 6.3.1

Condividi