我正在将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()。
提前感谢。
检查连接到MongoDB服务器(本地或远程的最简单方法是使用以下API代码(也可以使用控制台应用程序或mvc项目来完成):
创建以下类,然后修改以下内容
Controller
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调用该方法,您应该返回集合列表。如果是这样,则您的数据库连接成功。如果不是,请检查您的连接字符串。