从 .NET 应用程序远程连接到 MongoDb

Remotely Connecting to MongoDb from a .NET App

从 .NET 应用程序连接到远程 MongoDb 实例时遇到一些问题。

我创建了一个非常简单的控制台应用程序,它基本上是一个冒烟测试并返回一个项目。如果我在 MongoDb 服务 运行ning 所在的服务器上 运行 它,它可以毫无问题地与 MongoDb 通信。而 ConnectionString 只是 mongodb://localhost:27017.

但是,我想在我的开发机器上的开发环境中 运行 它。我已经尝试了几个不同的连接字符串(列在这个 post 的末尾),但我一直收到超时错误:

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 : "Automatic", Type : "Unknown", State : "Disconnected", Servers : [{ ServerId: "{ ClusterId : 1, EndPoint : "192.168.1.51:27017" }", EndPoint: "192.168.1.51:27017", State: "Disconnected", Type: "Unknown" }] }.

我正在使用 mongocsharpdriver

的 v2.5.1

我在服务器上为27017端口创建了inboudd规则,甚至完全关闭了防火墙。

我的 Mongo 服务器的 cfg 文件非常基础:

系统日志: 目的地:文件 路径:E:\MongData\mongod.log<br> 贮存: 数据库路径:E:\MongData\db directoryPerDB: false 网: 港口:27017 安全: 授权:'enabled'

我没有任何复制品。只是一个实例。

如您所知,我是 Mongo 菜鸟。怎么了?

干杯

连接字符串:

<add name="MConnectionString" connectionString="mongodb://daveAdmin:firetruck1@192.168.1.51:27017" />
<add name="MRealEstateConnectionString" connectionString="mongodb://daveAdmin:firetruck1@BIGDOG:27017" />
<add name="MRealEstateConnectionString" connectionString="mongodb://BIGDOG:27017" />
<add name="RealEstateConnectionString" connectionString="mongodb://192.168.1.51:27017" />

我还尝试在下载 Mongo 二进制文件(zip 文件)后使用 CLI 进行连接,但没有成功:

W:\mongodb\bin>mongo --host BIGDOG:27017 MongoDB shell version v3.7.5-85-gb48579fcba connecting to: mongodb://BIGDOG:27017/ 2018-04-22T11:05:36.098+0930 E QUERY [js] Error: couldn't connect to server BIGDOG:27017, connection attempt failed: NetworkTimeout: Socket operation timed out : connect@src/mongo/shell/mongo.js:251:13 @(connect):1:6 exception: connect failed

W:\mongodb\bin>mongo --host 192.168.1.51:27017 MongoDB shell version v3.7.5-85-gb48579fcba connecting to: mongodb://192.168.1.51:27017/ 2018-04-22T11:05:56.508+0930 E QUERY [js] Error: couldn't connect to server 192.168.1.51:27017, connection attempt failed: NetworkTimeout: Socket operation timed out : connect@src/mongo/shell/mongo.js:251:13 @(connect):1:6 exception: connect failed

W:\mongodb\bin>mongo --username daveAdmin --password firetruck1 --host 192.168.1.51:27017 MongoDB shell version v3.7.5-85-gb48579fcba connecting to: mongodb://192.168.1.51:27017/ 2018-04-22T11:07:49.671+0930 E QUERY [js] Error: couldn't connect to server 192.168.1.51:27017, connection attempt failed: NetworkTimeout: Socket operation timed out : connect@src/mongo/shell/mongo.js:251:13 @(connect):1:6 exception: connect failed

W:\mongodb\bin>mongo --username daveAdmin --password firetruck1 --host BIGDOG:27017 MongoDB shell version v3.7.5-85-gb48579fcba connecting to: mongodb://BIGDOG:27017/ 2018-04-22T11:08:54.305+0930 E QUERY [js] Error: couldn't connect to server BIGDOG:27017, connection attempt failed: NetworkTimeout: Socket operation timed out : connect@src/mongo/shell/mongo.js:251:13 @(connect):1:6 exception: connect failed

我可以 ping 服务器并从我的开发桌面访问它的网络共享。

如何远程连接?这只是一个简单的本地网络——几台通过交换机连接的计算机。

How do I connect remotely? This is just a simple local network

MongoDB 3.6、MongoDB 二进制文件、mongodmongos 开始,默认绑定到 localhost

当只绑定到本地主机时,这些 MongoDB 3.6 二进制文件只能接受来自 运行 在同一台机器上的客户端的连接。远程客户端无法连接到仅绑定到本地主机的二进制文件。

根据您提供的配置文件,您似乎仍然只绑定到本地主机接口(默认)。这解释了为什么当您的 application/mongo shell 是从同一个 MongoDB 服务器主机执行时您能够连接。

在您的示例中,您可以尝试使用以下 运行 mongod :

mongod --bind_ip localhost,192.168.1.51 

有关配置参数格式选项,另请参阅 net.bindIp

您可能还对以下内容感兴趣:MongoDB Security Hardening