【问题标题】:Remotely Connecting to MongoDb from a .NET App从 .NET 应用程序远程连接到 MongoDb
【发布时间】:2018-09-29 15:25:48
【问题描述】:

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

我创建了一个非常简单的控制台应用程序,它基本上是一个冒烟测试并带回一个项目。如果我在运行 MongoDb 服务的服务器上运行它,它会毫无问题地与 MongoDb 对话。 ConnectionString 就是mongodb://localhost:27017

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

使用 CompositeServerSelector{ Selectors = MongoDB.Driver.MongoClient+AreSessionsSupportedServerSelector, LatencyLimitingServerSelector{ AllowedLatencyRange = 00:00:00.0150000 } } 选择服务器 30000 毫秒后发生超时。集群状态的客户端视图是 { ClusterId : "1", ConnectionMode : "Automatic", Type : "Unknown", State : "Disconnected", Servers : [{ ServerId: "{ ClusterId : 1, EndPoint : "192.168.1.51: 27017“}”,端点:“192.168.1.51:27017”,状态:“断开连接”,类型:“未知”}]}。

我正在使用mongocsharpdriver的v2.5.1

我已经为服务器上的 27017 端口创建了一个入站规则,甚至完全关闭了防火墙。

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

systemLog: destination: file path: E:\MongData\mongod.log
storage: dbPath: E:\MongData\db directoryPerDB: false net: port: 27017 security: authorization: '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外壳版本v3.7.5-85-gb48579fcba 连接到:mongodb://BIGDOG:27017/ 2018-04-22T11:05:36.098+0930 E QUERY [js] 错误:无法连接到服务器 BIGDOG:27017,连接尝试失败:NetworkTimeout:套接字操作超时: 连接@src/mongo/shell/mongo.js:251:13 @(连接):1:6 异常:连接失败

W:\mongodb\bin>mongo --host 192.168.1.51:27017 MongoDB外壳版本v3.7.5-85-gb48579fcba 连接到:mongodb://192.168.1.51:27017/ 2018-04-22T11:05:56.508+0930 E QUERY [js] 错误:无法连接到服务器 192.168.1.51:27017,连接尝试失败:NetworkTimeout:套接字操作超时: 连接@src/mongo/shell/mongo.js:251:13 @(连接):1:6 异常:连接失败

W:\mongodb\bin>mongo --username daveAdmin --password firetruck1 --host 192.168.1.51:27017 MongoDB外壳版本v3.7.5-85-gb48579fcba 连接到:mongodb://192.168.1.51:27017/ 2018-04-22T11:07:49.671+0930 E QUERY [js] 错误:无法连接到服务器 192.168.1.51:27017,连接尝试失败:NetworkTimeout:套接字操作超时: 连接@src/mongo/shell/mongo.js:251:13 @(连接):1:6 异常:连接失败

W:\mongodb\bin>mongo --username daveAdmin --password firetruck1 --host BIGDOG:27017 MongoDB外壳版本v3.7.5-85-gb48579fcba 连接到:mongodb://BIGDOG:27017/ 2018-04-22T11:08:54.305+0930 E QUERY [js] 错误:无法连接到服务器 BIGDOG:27017,连接尝试失败:NetworkTimeout:套接字操作超时: 连接@src/mongo/shell/mongo.js:251:13 @(连接):1:6 异常:连接失败

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

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

【问题讨论】:

  • 您运行的是哪个 MongoDB 服务器版本?你也试过通过mongo shell 连接吗?
  • @WanBachtiar 服务器版本为 v3.6.3 。我没有尝试远程连接到它,因为我的开发机器上没有安装 Mongo。
  • @WanBachtiar 好的,我在 zip 文件中下载了 mongo 二进制文件并尝试手动连接。我已经用详细信息更新了问题。

标签: mongodb mongodb-.net-driver


【解决方案1】:

如何远程连接?这只是一个简单的本地网络

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

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

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

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

mongod --bind_ip localhost,192.168.1.51 

另见net.bindIp 配置参数格式选项。

您可能还感兴趣:MongoDB Security Hardening

【讨论】:

  • 非常感谢。我现在可以手动和通过控制台应用程序进行连接。这是一个很大的帮助,我将阅读安全强化页面。
猜你喜欢
  • 1970-01-01
  • 2023-04-10
  • 2013-10-23
  • 2018-03-12
  • 2019-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
相关资源
最近更新 更多