MongoDB C# Соединение: у клиента нет функции .GetServer () - PullRequest
0 голосов
/ 06 апреля 2020

Я использую MongoDB C# Драйвер 2.10 с MongoDB v4.2, и я хочу проверить, успешно ли установлено соединение.

Большинство людей говорят, что я должен сделать следующее:

var client = new MongoClient("ConnectionString");

db = client.GetDatabase(database);
var server = client.GetServer();
try
{
    server.Ping();
    Console.WriteLine("Connected"); 
}
catch (ex)
{
    Console.WriteLine("Failed");
}

Но на самом деле моя программа говорит, что у клиента нет функции .GetServer ().

Заранее спасибо.

1 Ответ

0 голосов
/ 06 апреля 2020

Самый простой способ проверить, подключены ли вы к серверу MongoDB (локальному или удаленному, - использовать следующий код API (это также можно сделать с помощью консольного приложения или проекта mvc):

Создайте следующие классы и измените следующие

Контроллер

using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using {{YourApplicationName}}.Repository;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;

[Route("api/[controller]")]
[ApiController]
public class YourControllerName : ControllerBase
{
    private readonly IRepository _repo;

    [HttpGet, Route("CheckConnection")]

        public async Task<IActionResult> CheckConnection()
        {
            var result = await _repo.CheckConnection();
            if (result == null || result.Count <= 0)
                return BadRequest("Failed to connect to database.");
            return Ok("Database connection was successful");
        }

IRepository

using MongoDB.Bson;
using System.Collections.Generic;
using System.Threading.Tasks;

public interface IRepository
{
    Task<List<BsonDocument>> CheckConnection();
}

Репозиторий

using Microsoft.Extensions.Configuration;
using MongoDB.Bson;
using MongoDB.Driver;
using System.Collections.Generic;
using System.Threading.Tasks;

public class Repository : IRepository
{
    private readonly MongoClient _client;
    private readonly IMongoDatabase _database;

    public async Task<List<BsonDocument>> CheckConnection()
    {
        List<BsonDocument> list = await _database.ListCollections().ToListAsync();
        var populatedList = (list != null && list.Count > 0) ? list : null;
        return populatedList;
    }
}

appSettings. json

Добавить в файл

"DatabaseSettings": {
    "ConnectionString": "Your Server Connection String"
}

Database Settings.cs

public class DatabaseSettings
{
    public string ConnectionString { get; set; } 
}

Startup.cs

Добавить эту строку в метод настройки служб

services.AddSingleton(sp =>
            sp.GetRequiredService<IOptions<DatabaseSettings>>().Value);

Убедитесь, что вы создали хотя бы одну БД и хотя бы одну коллекцию.

Запустите приложение в режиме отладки и вызовите метод с помощью Postman, и вы должны получить список коллекций обратно. Если так, то соединение с БД прошло успешно. Если нет, проверьте строку подключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...