Это код для шины NserviseBus. Я получил ошибку при запуске этого кода. Ошибка "mscorlib.dll Не удалось извлечь" MySqlPassword "из переменных среды", пожалуйста, помогите мне. Спасибо....
using System;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
using NServiceBus;
using NServiceBus.Persistence.Sql;
class Program
{
static async Task Main()
{
Console.Title = "Samples.SqlPersistence.EndpointMySql";
#region MySqlConfig
var endpointConfiguration = new EndpointConfiguration("Samples.SqlPersistence.EndpointMySql");
var transport = endpointConfiguration.UseTransport<MsmqTransport>();
transport.Transactions(TransportTransactionMode.SendsAtomicWithReceive);
var persistence = endpointConfiguration.UsePersistence<SqlPersistence>();
var password = Environment.GetEnvironmentVariable("root");
if (string.IsNullOrWhiteSpace(password))
{
throw new Exception("Could not extract 'MySqlPassword' from Environment variables.");
}
var username = Environment.GetEnvironmentVariable("root");
if (string.IsNullOrWhiteSpace(username))
{
throw new Exception("Could not extract 'MySqlUserName' from Environment variables.");
}
var connection = $"server=localhost;user=
{username};database=sqlpersistencesample;port=3306;password=
{password};AllowUserVariables=True;AutoEnlist=false";
persistence.SqlDialect<SqlDialect.MySql>();
persistence.ConnectionBuilder(
connectionBuilder: () =>
{
return new MySqlConnection(connection);
});
var subscriptions = persistence.SubscriptionSettings();
subscriptions.CacheFor(TimeSpan.FromMinutes(1));
#endregion
endpointConfiguration.UseTransport<LearningTransport>();
endpointConfiguration.EnableInstallers();
var endpointInstance = await Endpoint.Start(endpointConfiguration)
.ConfigureAwait(false);
Console.WriteLine("Press any key to exit");
Console.ReadKey();
await endpointInstance.Stop()
.ConfigureAwait(false);
}
}
как решить mscorlib.dll Не удалось извлечь "MySqlPassword" из переменных окружения..? Пожалуйста, помогите мне..
Код пытается извлечь имя пользователя и пароль из коллекции переменных окружения компьютера. Они будут установлены по-разному в зависимости от операционной системы, в которой работает среда.
Если вы работаете в Windows, вы можете изменить переменные среды, выполнив поиск "Редактировать переменные системной среды" в меню "Пуск".
В качестве альтернативы вы можете пропустить доступ к переменной окружения, просто установив переменные непосредственно в коде:
// ...
var password = "root";
var username = "root";
var connection = $"server=localhost;user={username};database=sqlpersistencesample;port=3306;password={password};AllowUserVariables=True;AutoEnlist=false";
// ...
Учитывая, что это сообщение об ошибке возникает из вашего кода, а именно из
var password = Environment.GetEnvironmentVariable("root");
if (string.IsNullOrWhiteSpace(password))
{
throw new Exception("Could not extract 'MySqlPassword' from Environment variables.");
}
Я собираюсь догадаться, что нет либо root
переменной окружения, либо нет, и она устанавливается в пустую строку.
Кроме того, учитывая, что вы позже пытаетесь прочитать имя пользователя из той же переменной среды, я думаю, что здесь что-то пошло не так.