c# - Mongodb 在第一次连接时总是超时
问题描述
我已经设置了一个 Mongodb 数据库,我可以毫无问题地使用 Robo 3T 连接和查询它。
当我连接我的 C# 程序时,它总是在“第一次”连接时抛出超时错误。
但是,如果我在不重新启动应用程序的情况下再次运行查询,则没有问题。
环境:
MongoDB 4.2 + MongoDB 驱动程序 2.11
我尝试了 MongoDb 4.4,但结果相同。
C#:
var credential = MongoCredential.CreateCredential("Mydb", "WebUser", "******");
var client = new MongoClient(
new MongoClientSettings
{
Server = new MongoServerAddress("localhost", 27017),
Credential = credential,
UseTls = false,
ConnectionMode = ConnectionMode.Direct
});
var database = client.GetDatabase("Mydb");
var collection = db.GetCollection<UserModel>("User");
var documents = collection.Find(_ => true).ToList(); // Timeout on first time connects. Success starting from second time
MongoDB日志:
NETWORK [listener] connection accepted from 127.0.0.1:53288 #54 (1 connection now open)
NETWORK [listener] connection accepted from 127.0.0.1:53289 #55 (2 connections now open)
NETWORK [conn55] received client metadata from 127.0.0.1:53289 conn55: { driver: { name: "mongo-csharp-driver", version: "2.11.0.0" }, os: { type: "Windows", name: "Microsoft Windows 10.0.18362", architecture: "x86_32", version: "10.0.18362" }, platform: ".NET Framework 4.8.4200.0" }
NETWORK [conn54] received client metadata from 127.0.0.1:53288 conn54: { driver: { name: "mongo-csharp-driver", version: "2.11.0.0" }, os: { type: "Windows", name: "Microsoft Windows 10.0.18362", architecture: "x86_32", version: "10.0.18362" }, platform: ".NET Framework 4.8.4200.0" }
编辑:
抛出的错误信息:
{"A timeout occured after 30000ms selecting a server using CompositeServerSelector{ Selectors = MongoDB.Driver.MongoClient+AreSessionsSupportedServerSelector, LatencyLimitingServerSelector{ AllowedLatencyRange = 00:00:00.0150000 } }.
Client view of cluster state is { ClusterId : \"1\", ConnectionMode : \"Direct\", Type : \"Unknown\", State : \"Disconnected\", Servers : [{ ServerId: \"{ ClusterId : 1, EndPoint : \"Unspecified/localhost:27017\" }\", EndPoint: \"Unspecified/localhost:27017\", ReasonChanged: \"ServerInitialDescription\", State: \"Disconnected\", ServerVersion: , TopologyVersion: , Type: \"Unknown\", LastHeartbeatTimestamp: null, LastUpdateTimestamp: \"2020-08-19T15:59:54.5854245Z\" }] }."}
ps 只有一个集合“用户”和一个测试文档。
解决方案
推荐阅读
- django - Django:如何根据元组选择呈现 HTML 模板
- php - 我如何添加到数组
- javascript - React 不再需要 APP.js 中的 import 语句了吗?
- c# - Panel.controls 生成时返回 null
- javascript - 如何创建动态的 React Native 组件
- angular - 如何使用外部图像
? - java - 从 Azure Key Vault 检索证书(JKS 或 PFX)
- javascript - 添加一个ID来控制显示顺序
- python - Dockerized Django 项目无法连接到主机的 postgres 数据库
- javascript - 监听另一个 JS 文件中何时调用函数。(火狐插件/扩展)