我已经为 mongoDB vcore 数据库设置了一个免费的 cosmos DB,没有任何问题,然后我就能够利用提供的连接字符串通过我在 MongoDBCompass 和 Azure Data Studio 上的凭据连接到数据库,以确认该字符串正在工作并允许访问有问题的数据库。
但是,当我在 .Net 8 C# 应用程序中使用给定的字符串与 MongoDb.Driver 并插入正确的用户名和密码时
MongoDB.Driver.MongoConfigurationException:连接字符串“mongodb+srv://
填充客户端的代码是:
public NetworkService(IOptions<MongoDBSettings> mongoDBSettings)
{
_client = new MongoClient(mongoDBSettings.Value.ConnectionLocal);
}
我已经仔细检查了 mongoDBSettings.Value.ConnectionLocal 属性,并且使用 azure cosmos db 给出的正确字符串填充,因此我不确定为什么会收到此错误,指出该字符串无效。
当我将 ConnectionLocal 字符串指向本地 mongodb 数据库时,此代码也执行得非常好,并且 API 都按预期工作:
“ConnectionLocal”:“mongodb://localhost:27017/”,
找出问题所在 - 我的密码中有一个 @ 符号,看起来客户端设置失败,因为它使用此符号来表示密码在预期的 @ 之前结束
将符号编码为 %40 解决了该问题。