Thật không may, sau khi tìm hiểu sâu hơn một chút thông qua mã nguồn trình điều khiển C # (và mã nguồn Java để xem nó đang làm gì), địa chỉ máy chủ thực tế được sử dụng như một phần của tìm nạp bị ẩn trong Enumerator như một thành viên riêng tư. (_serverInstance
).
Đặc biệt, nó được ẩn trong một lớp có tên là MongoCursorEnumerator
. Thật không may, không có một cách "trung thực" để đạt được nó. Tôi cho rằng bạn có thể sử dụng phản chiếu .NET để truy cập nó, nhưng đó thường không phải là một ý tưởng hay, đặc biệt là với mã bạn không sở hữu. Nếu bạn muốn có một ngã ba tùy chỉnh của trình điều khiển, bạn có thể dễ dàng thêm nó làm thuộc tính mới. Bạn có thể muốn thêm sự cố tại đây
.
Nói chung, bạn có thể lấy các phiên bản được sử dụng bởi kết nối MongoDB, vì chúng có sẵn trên MongoServerInstance
lớp, Address
tài sản.
var client = new MongoClient();
var server = client.GetServer();
// server.Instance.Address
Tuy nhiên, trong trường hợp của bạn, bạn cũng có thể lấy nó từ cursor
qua Server
tài sản:
cursor.Server.Instance.Address.Host
hoặc
cursor.Server.Instances[]
Trình điều khiển C # ném và ngoại lệ một cách thú vị khi có nhiều Phiên bản. Vì vậy, nếu bạn không biết có bao nhiêu trường hợp, bạn cần phải xử lý exception
(InvalidOperationException
), hoặc luôn sử dụng Instances[]
thuộc tính để trả về các phiên bản được liên kết.