Исключение «Платформа не поддерживается» из MongoDB.DriverC#

Место общения программистов C#
Ответить
Anonymous
 Исключение «Платформа не поддерживается» из MongoDB.Driver

Сообщение Anonymous »

**Итак, я пытаюсь написать приложение C# .NET Maui для покедекса. Это не должно быть слишком сложно, но по какой-то причине база данных mongodb, с которой я работаю, не будет сотрудничать, и я не могу получить из нее какие-либо данные. **
2024-07-31 17:45:13.295804-0400 PokedexApp\[82592:2135044\] Collection retrieved successfully.

2024-07-31 17:45:13.295938-0400 PokedexApp\[82592:2135044\] Counting documents...

Exception thrown: 'System.InvalidOperationException' in Microsoft.Maui.dll
Exception thrown: 'System.InvalidOperationException' in Microsoft.Maui.dll
Exception thrown: 'System.PlatformNotSupportedException' in MongoDB.Driver.Core.dll
3
Exception thrown: 'System.PlatformNotSupportedException' in System.Private.CoreLib.dll
2024-07-31 17:45:13.472036-0400 PokedexApp\[82592:2135044\] \[API\] Failed to create 0x88 image slot (alpha=1 wide=0) (client=0x293736f1) \[0x5 (os/kern) failure\]

Это мой тест, потому что я уже давно сталкиваюсь с этой проблемой.
public async Task\ TestMongoConnection()
{
try
{
string connectionString = "mongodb+srv://\:\@pokedex.mayccu6.mongodb.net/";
string databaseName = "Pokedex";
string collectionName = "Pokemon";
//I replaced strings I know the string is correct but omitted for obvious reasons

Console.WriteLine("Creating MongoClient...");
var client = new MongoClient(connectionString);
Console.WriteLine("MongoClient created successfully.");

Console.WriteLine($"Getting database: {databaseName}");
var database = client.GetDatabase(databaseName);
Console.WriteLine("Database retrieved successfully.");

Console.WriteLine($"Getting collection: {collectionName}");
var collection = database.GetCollection(collectionName);
Console.WriteLine("Collection retrieved successfully.");

Console.WriteLine("Counting documents...");
var result = await collection.CountDocumentsAsync(new BsonDocument());
Console.WriteLine($"Successfully connected. Document count: {result}");
return true;
}
catch (MongoConfigurationException mcex)
{
Console.WriteLine($"MongoDB configuration error: {mcex.Message}");
Console.WriteLine($"Stack trace: {mcex.StackTrace}");
return false;
}
catch (MongoAuthenticationException maex)
{
Console.WriteLine($"MongoDB authentication error: {maex.Message}");
Console.WriteLine($"Stack trace: {maex.StackTrace}");
return false;
}
catch (MongoConnectionException mcex)
{
Console.WriteLine($"MongoDB connection error: {mcex.Message}");
Console.WriteLine($"Stack trace: {mcex.StackTrace}");
return false;
}
catch (Exception ex)
{
Console.WriteLine($"Unexpected error: {ex.GetType().Name} - {ex.Message}");
Console.WriteLine($"Stack trace: {ex.StackTrace}");
return false;
}
}
}

Итак, проблема возникает, когда я пытаюсь позволить пользователю ввести имя в строку поиска, а затем он передает введенные данные в этот класс, который должен получить всю необходимую информацию. данные из переданного имени покемона, так как я сталкивался с этой проблемой так много раз, что решил вместо этого проверить, распознает ли он какие-либо файлы, и их должно быть 151, но он продолжает возвращать 0, и я не могу понять, почему
У меня все обновлено, установлен драйвер mongodb.driver и все такое. У меня есть все пакеты, и я некоторое время успешно запускаю эту программу, не пытаясь извлечь ее из базы данных. Кто-нибудь знает решение или способ выяснить, почему она продолжает выдавать это исключение?
Я смог подтвердить, что когда я ввожу тот же запрос, который у меня есть, непосредственно в базу данных, он правильно возвращает нужную мне информацию, поэтому я думаю, что это связано с соединением, но я не уверен. Я запускаю это в XCode для приложения IOS на всякий случай.
Извините, если это сбивает с толку, проблема в том, что каждый раз, когда я запускаю его, я получаю такое исключение
р>
"'System.PlatformNotSupportedException' in MongoDB.Driver.Core.dll
3
Exception thrown:"

Это остальная часть моего кода на этой странице
public PokemonPage(string searchText)
{
InitializeComponent();
var viewModel = new PokemonDetailViewModel();
BindingContext = viewModel;
//viewModel.LoadPokemonDataAsync(searchText);
TestConnection();

}
private async void TestConnection()
{
var viewModel = (PokemonDetailViewModel)BindingContext;
bool connectionSuccessful = await viewModel.TestMongoConnection();
if (!connectionSuccessful)
{
await DisplayAlert("Connection Error", "Failed to connect to the database", "OK");
}
}
public class PokemonDetailViewModel
{

#region attribute binders

private int number;
public int Number
{
get => number;
set { number = value; OnPropertyChanged(); }
}

private string name;
public string Name
{
get => name;
set { name = value; OnPropertyChanged(); }
}

private int _hp;
public int HP
{
get => _hp;
set
{
_hp = value;
OnPropertyChanged();
OnPropertyChanged(nameof(HPProgress));
}
}
public double HPProgress => HP / 200.0;

private double _atk;
public double Attack
{
get => _atk;
set
{
_atk = value;
OnPropertyChanged();
OnPropertyChanged(nameof(AttackProgress));
}
}
public double AttackProgress => Attack / 200.0;

private double _def;
public double Defense
{
get => _def;
set
{
_def = value;
OnPropertyChanged();
OnPropertyChanged(nameof(DefenseProgress));
}
}
public double DefenseProgress => Defense / 200.0;

private double _spatk;
public double SpAtk
{
get => _spatk;
set
{
_spatk = value;
OnPropertyChanged();
OnPropertyChanged(nameof(SpAtkProgress));
}
}
public double SpAtkProgress => SpAtk / 200.0;

private double _spdef;
public double SpDef
{
get => _spdef;
set
{
_spdef = value;
OnPropertyChanged();
OnPropertyChanged(nameof(SpDefProgress));
}
}
public double SpDefProgress => SpDef / 200.0;

private double _spd;
public double Speed
{
get => _spd;
set
{
_spd = value;

OnPropertyChanged();
OnPropertyChanged(nameof(SpeedProgress));
}
}
public double SpeedProgress => Speed / 200.0;

private string type1;
public string Type1
{
get => type1;
set { type1 = value; OnPropertyChanged(); }
}

private string type2;
public string Type2
{
get => type2;
set { type2 = value; OnPropertyChanged(); }
}

private string height;
public string Height
{
get => height;
set { height = value; OnPropertyChanged(); }
}

private string weight;
public string Weight
{
get => weight;
set { weight = value; OnPropertyChanged(); }
}

private string baseTotal;
public string BaseTotal
{
get => baseTotal;
set { baseTotal = value; OnPropertyChanged(); }
}
#endregion

public event PropertyChangedEventHandler PropertyChanged;

protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

public async Task LoadPokemonDataAsync(string pokemonName)
{
try
{
Console.WriteLine($"Attempting to connect to database and search for {pokemonName}");

string connectionString = "mongodb+srv://tkhanpsn:Pokegocult@pokedex.mayccu6.mongodb.net";
string databaseName = "Pokedex";
string collectionName = "Pokedex.Pokemon";

var client = new MongoClient(connectionString);
Console.WriteLine("MongoClient created successfully");

var database = client.GetDatabase(databaseName);
Console.WriteLine("Database retrieved successfully");

var collection = database.GetCollection(collectionName);
Console.WriteLine("Collection retrieved successfully");

//Use Builders.Filter instead of Builders.Filter
var filter = Builders.Filter.Eq($" Name", "{pokemonName}");
var pokemon = await collection.Find(filter).FirstOrDefaultAsync();
Console.WriteLine("Find operation completed");

if (pokemon != null)
{
// Map database fields to properties
Console.WriteLine($"Pokemon Found: {pokemonName}");
Number = pokemon.Number;
Name = pokemon.Name;
Attack = pokemon.Attack;
Defense = pokemon.Defense;
Speed = pokemon.Speed;
HP = pokemon.HP;
Type1 = pokemon.Type1;
Type2 = pokemon.Type2;
Weight = pokemon.Weight;
Height = pokemon.Height;
BaseTotal = pokemon.BaseTotal;

// Add other properties you need to set
}
else
{
await Application.Current.MainPage.DisplayAlert("Error", "Pokemon Not Found", "OK");
}
}
catch (Exception ex)
{
await Application.Current.MainPage.DisplayAlert("Error", $"An error occurred: {ex.Message}", "OK");
}
}


Подробнее здесь: https://stackoverflow.com/questions/788 ... odb-driver
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»