本节介绍 .NET/C# 驱动程序支持的 MongoDB 连接和身份验证选项。您可以使用连接 URI 或 MongoClientSettings 对象配置连接。
使用连接 URI
如果将连接 URI 传递给 MongoClient 构造函数,则可以将连接选项作为 <name>=<value> 对包含在字符串中。在以下示例中,连接 URI 包含值为 60000 的 connectTimeoutMS 选项和值为 true 的 tls 选项:
using MongoDB.Driver; // Sets the connection URI const string connectionUri = "mongodb+srv://sample.host:27017/?connectTimeoutMS=60000&tls=true"; // Creates a new client and connects to the server var client = new MongoClient(connectionUri);
运用 MongoClientSettings
您可以使用 MongoClientSettings 对象在代码中(而不是在连接 URI 中)配置连接设置。以这种方式配置连接可以更轻松地在运行时更改设置,帮助您在编译期间捕获错误,并提供比连接 URI 更多的配置选项。
要使 用 MongoClientSettings对象,请创建该类的实例,设置其属性,并将其作为参数传递给 MongoClient 构造函数:
//const string connectionUri = "mongodb+srv://sample.host:27017/?connectTimeoutMS=60000&tls=true"; // Creates a MongoClientSettings object var settings = new MongoClientSettings() { Scheme = ConnectionStringScheme.MongoDBPlusSrv, Server = new MongoServerAddress("sample.host", 27017), ConnectTimeout = new TimeSpan(0, 0, 60), UseTls = true }; // Creates a new client and connects to the server var client = new MongoClient(settings);
连接选项
下表列出了 MongoClientSettings 类中可用的每个连接选项,以及如何在连接字符串中实现相同的结果(如可能)。如果 MongoClientSettings 属性映射到连接字符串中的多个选项,则连接 URI 示例将显示所有相关选项。
注意
如果将查询参数用于时间段,其值必须以毫秒为单位。例如,要指定 60 秒,请使用值 60000。如果将 MongoClientSettings 对象用于时间段,请使用相应的 TimeSpan 值。
MongoClientSettings 属性 | 说明 | |||
|---|---|---|---|---|
AllowInsecureTls | 指定是否尽可能放宽 TLS 约束。这可以包括 | |||
ApplicationName |
| |||
AutoEncryptionOptions | 客户端自动加密的设置。 | |||
ClusterConfigurator | 套接字、TLS、集群等项目的低级配置选项。 | |||
compressors | 首选的压缩类型(按顺序),用于发送到 | |||
ConnectTimeout | 驱动程序在超时前尝试与服务器建立单个 TCP | |||
凭证 | 驱动程序如何对服务器进行身份验证的设置。这包括 | |||
DirectConnection | 指定是否强制将 所有 操作分派到托管。 | |||
HeartbeatInterval | 定期服务器监控检查之间的时间间隔。必须大于或 | |||
HeartbeatTimeout | 监控套接字在超时之前可处于空闲状态的时间长度。 | |||
IPv6 | 指定托管地址是否为 IPv6 格式。 | |||
IsFrozen | 表示设置是否已冻结。无法更改冻结的设置。 | |||
LinqProvider | 要使用的 LINQ 提供商。 | |||
LoadBalanced | 指定驱动程序是否连接到负载均衡器。只有在以下情况下,您才能将此
数据类型: | |||
LocalThreshold | 服务器资格的延迟窗口。 | |||
LoggingSettings | 用于 日志记录的设置。 | |||
MaxConnecting |
| |||
MaxConnectionIdleTime | 在驱动程序关闭连接之前,该连接可以处于空闲状态的时间长度。 | |||
MaxConnectionLifeTime | 连接在过期前可以建立连接池的时间长度。 | |||
MaxConnectionPoolSize |
| |||
MinConnectionPoolSize |
| |||
readConcern | 客户端的默认读关注(read concern)。 | |||
ReadEncoding | 用于 string 反序列化的 UTF-8 编码。 | |||
读取偏好 | 客户端的默认读取偏好(read preference)设置。 您可以在连接 URI 中多次包含 | |||
ReplicaSetName | 要连接的副本集的名称。 | |||
retryReads | 允许重试读取。 | |||
retryWrites | 启用可重试写入。 | |||
有关 | 指定是使用标准连接字符串格式 ( | |||
服务器 | 运行 MongoDB 的托管和端口号。 | |||
ServerApi | 允许选择 Stable API 版本控制。有关 Stable API 版本控制的更多信息,请参阅 | |||
ServerMonitoringMode | 指定要使用的服务器监控协议。 | |||
服务器 | 运行 MongoDB 的集群节点。 | |||
ServerSelectionTimeout | 驱动程序在超时之前尝试选择服务器的时间长度。 | |||
SocketTimeout |
| |||
SrvMaxHosts | 初始填充种子列表或在 SRV 轮询期间向拓扑结构添加新主机时要随机选择的 SRV 结果的最大数量。 | |||
SrvServiceName | SRV 资源记录的服务名称,驱动程序会检索该服务名称以构建您的种子列表。 | |||
SslSettings | TLS/SSL 选项,包括客户端证书、撤销处理以及启用和禁用的 | |||
UseTls | 指定是否需要 TLS 来连接到服务器。如果使用 | |||
WaitQueueTimeout |
| |||
writeConcern | 客户端的默认写关注(write concern)设置,包括写入超时和 | |||
WriteEncoding | 指定 UTF-8 string 序列化是严格的还是宽松的。 |