更新时间:2026-05-27 GMT+08:00
分享

C#示例

操作场景

DDS支持通过C#语言接口来操作数据,通过C#连接实例的方式有开启SSL认证连接和关闭SSL认证连接两种,其中开启SSL证书连接加密功能,具有更高的安全性。

DDS新实例默认关闭SSL数据加密,开启SSL请参考开启SSL

本章节主要介绍使用C#语言连接副本集实例的方法。

前提条件

  1. 连接数据库的弹性云服务器必须和DDS实例之间网络互通,可以使用curl命令连接DDS实例服务端的IP和端口号,测试网络连通性。

    shell

    curl ip:port

    返回“It looks like you are trying to access MongoDB over HTTP on the native driver port.”,说明网络互通。

  2. 如果开启SSL,需要在界面上下载根证书,并上传到弹性云服务器。

环境配置及驱动获取

  1. 安装.NET SDK: 保证您的环境有.NET SDK。您可以从官方网站进行下载:https://dotnet.microsoft.com/download
  2. 创建新项目: 打开终端或命令提示符,创建一个新的.NET 控制台应用程序。
    dotnet new console -n DDSExample
    cd DDSExample
  3. 添加 MongoDB C# 驱动程序: 使用 NuGet 将 MongoDB C# 驱动程序添加到您的项目中。
    dotnet add package MongoDB.Driver

开启和关闭SSL安全连接

using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Security.Cryptography.X509Certificates;
using System.Threading.Tasks;
 
public class MongoDBSecureWriter
{
    public static async Task Main()
    {
        var connectionString = "mongodb://rwuser:rwuserpassword@ip:port/{mydb}?authSource=admin&replicaSet=replica";
        var caCertPath = "/path/to/certs/ca.crt";  
        var collectionName = "testCollection";    
 
        try
        {
            var client = CreateSecureClient(connectionString, caCertPath);
            
            var database = client.GetDatabase("mydatabase");
            var collection = database.GetCollection<BsonDocument>(collectionName);
            
            var document = new BsonDocument
            {
                { "name", "Secure Test" },
                { "value", 42 },
                { "timestamp", DateTime.UtcNow }
            };
            
            await collection.InsertOneAsync(document);
            Console.WriteLine($"Insert doc ID: {document["_id"]}");
            
            // 验证写入
            var filter = Builders<BsonDocument>.Filter.Eq("_id", document["_id"]);
            var result = await collection.Find(filter).FirstOrDefaultAsync();
            Console.WriteLine($"result: {(result != null ? "success" : "fail")}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Fail: {ex.Message}");
            if (ex.InnerException != null)
            {
                Console.WriteLine($"Exception: {ex.InnerException.Message}");
            }
        }
    }
 
    private static MongoClient CreateSecureClient(string connectionString, string caCertPath)
    {
        var caCert = new X509Certificate2(caCertPath);
        
        var settings = MongoClientSettings.FromConnectionString(connectionString);
 
        settings.SslSettings = new SslSettings
        {
            CheckCertificateRevocation = false,
            ClientCertificates = new[] { caCert }
        };
        settings.UseTls = true;
        settings.AllowInsecureTls = true;
 
        settings.MaxConnectionPoolSize = 100;
        settings.MinConnectionPoolSize = 10;
        
        return new MongoClient(settings);
    }
}
using MongoDB.Driver;
using MongoDB.Bson;
using System;
class Program
{
    static void Main(string[] args)
    {
        // Replace <YourConnectionString> with your MongoDB connection string
        var connectionString = "mongodb://rwuser:rwuserpassword@ip:port/{mydb}?authSource=admin&replicaSet=replica";
        
        // Create a MongoClient object
        var client = new MongoClient(connectionString);
        
        // Get a reference to the database
        var database = client.GetDatabase("testDatabase");
        
        // Get a reference to a collection
        var collection = database.GetCollection<BsonDocument>("testCollection");
        
        // Create a sample document
        var document = new BsonDocument
        {
            { "name", "DDS" },
            { "type", "Database" },
            { "count", 1 },
            { "versions", new BsonArray { "v3.4", "v4.0", "v4.2" } },
            { "info", new BsonDocument { { "x", 203 }, { "y", 102 } } }
        };
        
        // Insert the document into the collection
        collection.InsertOne(document);
        
        Console.WriteLine("Document inserted successfully!");
    }
}
  • URL中的认证数据库必须为“admin”,即“authSource=admin”。
  • rwuser账户的认证数据库必须为“admin”,之后再切换至业务数据库。

运行程序

在终端或命令提示符使用以下命令运行程序。

dotnet run

相关文档