Als je vanuit ASP.NET een verbinding wilt maken met jouw MySQL-database, dan moet je daarvoor gebruikmaken van de MySQL Connector/NET assemblies, of MySQL Connector/ODBC. In dit artikel leggen we je uit hoe je Connector/NET’s assemblies MySql.Data.dll en MySql.Web.dll goed instelt in jouw website’s web.config-bestand. Door dit op deze manier te doen weet je zeker dat de website geen fouten geeft na een migratie en kun je eenvoudig MySQL Connector/NET updaten.

Let op: ASP.NET 2.0 is verouderd. Oude websites kunnen dit nog gebruiken, maar alleen ASP.NET 4.0+ is ondersteund door Vevida. Het is belangrijk om te allen tijde zelf te zorgen voor een (recente) versie van Connector/NET. Ga niet uit van een versie die wij mogelijk serverbreed geïnstalleerd hebben.

Download nu eerst Connector/NET van MySQL.

Connector/NET instellen in ASP.NET 4.0+

In dit voorbeeld gaan we uit van MySQL Connector/NET versie 8.0.17, ter illustratie. Neem de juiste gegevens over van de versie jij gebruikt.

Het artikel MySQL-databasetoegang: ASP.NET licht al een klein tipje van de sluier omtrent het instellen van MySql.Data.dll en MySql.Web.dll (je vindt er ook een voorbeeldscript). Nu gaan we er iets verder op in.

Na de installatie van Connector/NET 8.0.17 op jouw computer, pluk je de assemblies MySql.Data.dll en MySql.Web.dll uit de map C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.17\Assemblies\v4.5.2. Let goed op dependencies, zoals Renci.SshNet.dll. Upload deze bestanden via FTP naar de map ~/bin van jouw website-applicatie. Als je wilt weten hoe je FileZilla installeert, zie dan ons artikel FTP-programma FileZilla installeren.

Gebruik je Visual Studio, dan kies je voor een bin-deploy van je webapplicatie. Dit uploadt dependencies en assemblies van jouw ASP.NET-webapplicatie rechtstreeks naar de ~/bin-map.

In het web.config-bestand moet je nu de volgende regels opnemen of aanpassen om de DLL’s aan jouw ASP.NET-webapplicatie toe te voegen:

<system.web>
	<compilation debug="false">
		<assemblies>
			<add assembly="MySql.Data, Version=8.0.17.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
			<add assembly="MySql.Web, Version=8.0.17.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
		</assemblies>
	</compilation>
</system.web>

Een dependency als Renci.SshNet.dll hoeft alleen maar in de ~/bin-map aanwezig te zijn. Dependencies zijn versie-afhankelijk, raadpleeg de documentatie van MySQL.

In plaats van Connector/NET kun je ook gebruikmaken van MySQL Connector/ODBC.

Connector/NET instellen in ASP.NET 2.0

In ASP.NET 2.0 ben je afhankelijk van de door Vevida beschikbaar gestelde versie: 6.6.4.0. Om hiervan gebruik te maken moet je het volgende twee regels toevoegen aan jouw web.config-bestand:


<add assembly="MySql.Data, Version=6.6.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
<add assembly="MySql.Web, Version=6.6.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>

Dit moet staan binnen de <assemblies></assemblies> XML-node.

Als je ook gebruikmaakt van het Entity Framework moet je die assembly ook eraan toevoegen:


<add assembly="MySql.Data.Entity, Version=6.6.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>

Het Entity Framework is een object-relational mapper (O/RM), waarmee .NET-ontwikkelaars kunnen werken met een database met behulp van .NET-objecten.

Je kunt nu een ASP.NET databaseverbinding met MySQL maken, maar let op het gebruik van SslMode.

Je kunt helaas geen TLS-beveiligde verbinding naar MySQL maken, en mogelijk ook niet meer verbinden met nieuwe MySQL-/MariaDB-databaseservers. De minimale versies die TLS 1.2 versleuteling voor MySQL-verbindingen ondersteunen zijn Connector/NET 6.10.4 en Connector/NET 8.0.11. Upgrade daarom zo snel mogelijk naar ASP.NET 4.0+.

Veelvoorkomende foutmeldingen

Een aantal veelvoorkomende foutmeldingen met betrekking tot ASP.NET assemblies en/of Connector/NET zijn staan hier opgesomd.

System.IO.IOException: The handshake failed due to an unexpected packet format.
De versie van MySQL Connector/NET is te oud om met SSL verbinding te maken met onze MySQL-/MariaDB-databaseservers, als je SslMode=REQUIRED; of SslMode=PREFERRED; gebruikt.

Verander dit in de connectiestring naar SslMode=None;. Hiermee maak je een onbeveiligde verbinding.

Could not load file or assembly ‘MySql.Data’ or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.

Dit betekent dat de assembly voor een nieuwere runtime is gebouwd dan dat jij gebruikt in je webapplicatie, bijvoorbeeld een assembly voor ASP.NET versie 4.8 in een ASP.NET 2.0-webapplicatie.

System.Security.SecurityException: Request for the permission of type ‘System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089’ failed.

Je hebt abusievelijk een andere versie van MySql.Data geplaatst in jouw ~/bin-folder, en je refereert wel naar deze nieuwe versie in de <assemblies></assemblies> XML-node. Je lost dit op twee manieren op:

  1. verwijder de foutieve assembly uit de ~/bin-folder en breng het web.config-bestand terug in originele staat. Refereer de juiste assemblies en versies.
  2. stel een assembly bindingRedirect in om alle versies te redirecten naar de juiste 6.6.4.0
<runtime>
	<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
	<dependentAssembly>
		<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d"/>
		<bindingRedirect oldVersion="1.0.0.0-8.0.17.0" newVersion="6.6.4.0"/>
	</dependentAssembly>
	<dependentAssembly>
		<assemblyIdentity name="MySql.Web" publicKeyToken="c5687fc88969c44d"/>
		<bindingRedirect oldVersion="1.0.0.0-8.0.17.0" newVersion="6.6.4.0"/>
	<</dependentAssembly>
</runtime>

Compiler Error Message: CS0433: The type ‘MySql.Data.MySqlClient.MySqlConnection’ exists in both ‘c:\Windows\assembly\GAC_MSIL\MySql.Data\6.6.4.0__c5687fc88969c44d\MySql.Data.dll’ and ‘d:\www\example.com\temp\asp.net_v2.0\043c1110\fd7dbd9b\assembly\dl3\7452453a\a751697b_a35dd501\MySql.Data.DLL’

Je hebt abusievelijk een andere versie van MySql.Data geplaatst in jouw ~/bin-folder, en je refereert niet aan deze versie in de <assemblies></assemblies> XML-node. Verwijder de foutieve assemblies uit de ~/bin-folder.

CS0246: The type or namespace name ‘MySql’ could not be found (are you missing a using directive or an assembly reference?)

Waarschijnlijk heb je MySql.Data.dll en MySql.Web.dll nog niet in de ~/bin-map van jouw website geplaatst.

Wat vind jij van dit antwoord?

Voor vragen kun je met ons chatten, mailen of bellen (050 211 0100)

Bedankt voor je feedback!

Er is een fout opgetreden. Probeer het later opnieuw.