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

时间:2018-04-19 08:00:13

标签: mongodb mongodb-.net-driver

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

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

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

  

使用CompositeServerSelector选择服务器30000ms后出现超时{Selectors = MongoDB.Driver.MongoClient + AreSessionsSupportedServerSelector,LatencyLimitingServerSelector {AllowedLatencyRange = 00:00:00.0150000}}。集群状态的客户端视图是{ClusterId:“1”,ConnectionMode:“Automatic”,类型:“Unknown”,状态:“Disconnected”,服务器:[{ServerId:“{ClusterId:1,EndPoint:”192.168.1.51: 27017“}”,终点:“192.168.1.51:27017”,状态:“已断开”,输入:“未知”}}}。

我正在使用mongocsharpdriver

的v2.5.1

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

我的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&gt; mongo --host BIGDOG:27017   MongoDB shell版本v3.7.5-85-gb48579fcba   连接到:mongodb:// BIGDOG:27017 /   2018-04-22T11:05:36.098 + 0930 E QUERY [js]错误:无法连接到服务器BIGDOG:27017,连接尝试失败:NetworkTimeout:套接字操作超时:   connect@src/mongo/shell/mongo.js:251:13   @(连接):1:6   异常:连接失败

     

W:\ mongodb \ bin&gt; mongo --host 192.168.1.51:27017   MongoDB shell版本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:套接字操作超时:   connect@src/mongo/shell/mongo.js:251:13   @(连接):1:6   异常:连接失败

     

W:\ mongodb \ bin&gt; mongo --username daveAdmin --password firetruck1 --host 192.168.1.51:27017   MongoDB shell版本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:套接字操作超时:   connect@src/mongo/shell/mongo.js:251:13   @(连接):1:6   异常:连接失败

     

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

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

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

1 个答案:

答案 0 :(得分:1)

  

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

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

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

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

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

mongod --bind_ip localhost,192.168.1.51 

另请参阅net.bindIp了解配置参数格式选项。

您可能也对MongoDB Security Hardening

感兴趣