首页 > 解决方案 > 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 只有一个集合“用户”和一个测试文档。

标签: c#mongodb

解决方案


推荐阅读