本节介绍 .NET/C# 驱动程序支持的 MongoDB 连接和身份验证选项。您可以使用连接 URI 或 MongoClientSettings 对象配置连接。
使用连接 URI
如果将连接 URI 传递给 MongoClient 构造函数,则可以将连接选项作为 <name>=<value> 对包含在字符串中。在以下示例中,连接 URI 包含值为 60000 的 connectTimeoutMS 选项和值为 true 的 tls 选项:
using MongoDB.Driver;
// Sets the connection URIconst string connectionUri = "mongodb+srv://sample.host:27017/?connectTimeoutMS=60000&tls=true";
// Creates a new client and connects to the servervar 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 objectvar 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 servervar 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 序列化是严格的还是宽松的。 |