从 .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 二进制文件、mongod
和 mongos
开始,默认绑定到 localhost
。
当只绑定到本地主机时,这些 MongoDB 3.6 二进制文件只能接受来自 运行 在同一台机器上的客户端的连接。远程客户端无法连接到仅绑定到本地主机的二进制文件。
根据您提供的配置文件,您似乎仍然只绑定到本地主机接口(默认)。这解释了为什么当您的 application/mongo shell 是从同一个 MongoDB 服务器主机执行时您能够连接。
在您的示例中,您可以尝试使用以下 运行 mongod :
mongod --bind_ip localhost,192.168.1.51
有关配置参数格式选项,另请参阅 net.bindIp。
您可能还对以下内容感兴趣:MongoDB Security Hardening
从 .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
我在服务器上为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 二进制文件、mongod
和 mongos
开始,默认绑定到 localhost
。
当只绑定到本地主机时,这些 MongoDB 3.6 二进制文件只能接受来自 运行 在同一台机器上的客户端的连接。远程客户端无法连接到仅绑定到本地主机的二进制文件。
根据您提供的配置文件,您似乎仍然只绑定到本地主机接口(默认)。这解释了为什么当您的 application/mongo shell 是从同一个 MongoDB 服务器主机执行时您能够连接。
在您的示例中,您可以尝试使用以下 运行 mongod :
mongod --bind_ip localhost,192.168.1.51
有关配置参数格式选项,另请参阅 net.bindIp。
您可能还对以下内容感兴趣:MongoDB Security Hardening