Я пытаюсь подключить отличный MySqlConnector @ [Брэдли Грейнджер] к логгеру Nlog с помощью dotnet core 3.0 - мне нужны асинхронные возможности MySqlConnector.
Он работал нормально с MySql.Data, однако производительность намного лучше с MySqlConnector. Веб-приложение работает нормально без подключенного регистратора NLog, однако я получаю исключение при попытке использовать регистратор согласно инструкциям.
Я создал базовый веб-API (из шаблона VS) &не делайте ничего, кроме попыток присоединиться к регистратору и затем открыть соединение.
пакетов:
- MySqlConnector 0.60.2
- MySqlConnector.Logging.NLog 0.58. 0
- NLog.Web.AspNetCore 4.9.0
nlog.config содержит:
<target name="database" xsi:type="Database" >
<connectionString>${gdc:item=connectionString}</connectionString>
<commandText>
insert into log (
...
Program.cs получает строку подключения и устанавливает ее для NLog:
DotEnv.Config();
string connectionString = "server=" + Environment.GetEnvironmentVariable("SQL_HOST") ...
GlobalDiagnosticsContext.Set("connectionString", connectionString);
Когда я добавляю MySqlConnectorLogManager.Provider = new NLogLoggerProvider();
в Startup.cs согласно readme и получаю метод .Open ()
var connection = new MySqlConnection(connectionString);
connection.Open();
, генерируется следующее исключение
System.TypeInitializationException: 'The type initializer for 'MySql.Data.MySqlClient.MySqlConnection' threw an exception.'
Inner Exception:
FileNotFoundException: Could not load file or assembly 'System.Data.SqlClient, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
StackTrace:
at MySql.Data.MySqlClient.MySqlConnection.SetState(ConnectionState newState) in C:\projects\mysqlconnector\src\MySqlConnector\MySql.Data.MySqlClient\MySqlConnection.cs:line 668
at MySql.Data.MySqlClient.MySqlConnection.<OpenAsync>d__26.MoveNext() in C:\projects\mysqlconnector\src\MySqlConnector\MySql.Data.MySqlClient\MySqlConnection.cs:line 292
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at MySql.Data.MySqlClient.MySqlConnection.Open() in C:\projects\mysqlconnector\src\MySqlConnector\MySql.Data.MySqlClient\MySqlConnection.cs:line 280
at WebApplication1.DataReaderHelper.ExecuteStoredProcedure(String procedureName)
есть идеи, пожалуйста?