{"record":{"id":"7e68ecf005477db2","repo":"microsoft/aspire","slug":"cannot-build-connection-string-for-mongodb-replica-set","errorCode":null,"errorMessage":"Cannot build connection string for MongoDB replica set resource '{Name}' because it does not have any members.","messagePattern":"Cannot build connection string for MongoDB replica set resource '(.+?)' because it does not have any members\\.","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"src/Aspire.Hosting.MongoDB/ReplicaSet/MongoDBReplicaSetResource.cs","lineNumber":84,"sourceCode":"    /// </summary>\n    internal HashSet<string> StoppedMembers { get; } = new(StringComparers.ResourceName);\n\n    /// <summary>\n    /// Whether the replica set has been configured, meaning it can be reported as running again if its members come back.\n    /// </summary>\n    internal bool IsConfigured { get; set; }\n\n    /// <summary>\n    /// Gets the MongoDB server resources that are members of this replica set, in the order they were added.\n    /// </summary>\n    public IEnumerable<MongoDBServerResource> Members => Annotations.OfType<MongoReplicaSetMemberAnnotation>().Select(a => a.Member);\n\n    private ReferenceExpression BuildConnectionString()\n    {\n        var membersList = Members.ToList();\n        if (membersList is [])\n        {\n            throw new InvalidOperationException($\"Cannot build connection string for MongoDB replica set resource '{Name}' because it does not have any members.\");\n        }\n\n        var builder = new ReferenceExpressionBuilder();\n\n        // Build the seed list `mongodb://host1:port1,host2:port2,.../?replicaSet=<name>` — see https://www.mongodb.com/docs/manual/reference/connection-string/#dns-seedlist-connection-format\n        builder.AppendLiteral(\"mongodb://\");\n\n        if (SharedUserNameParameter is not null)\n        {\n            builder.Append($\"{SharedUserNameParameter:uri}:{SharedPasswordParameter:uri}@\");\n        }\n        else\n        {\n            builder.Append($\"{MongoDBServerResource.DefaultUserName:uri}:{SharedPasswordParameter:uri}@\");\n        }\n\n        for (var i = 0; i < membersList.Count; i++)\n        {","sourceCodeStart":66,"sourceCodeEnd":102,"githubUrl":"https://github.com/microsoft/aspire/blob/25830f84bd145686607ad00c057b3f84e2e51d43/src/Aspire.Hosting.MongoDB/ReplicaSet/MongoDBReplicaSetResource.cs#L66-L102","documentation":"MongoDBReplicaSetResource builds its connection string as a seed list mongodb://host:port,host:port/?replicaSet=... from its member resources. If the replica set has no members registered, there is nothing to build the seed list from, so BuildConnectionString throws this InvalidOperationException.","triggerScenarios":"Evaluating the replica set's ConnectionStringExpression (e.g. when a consuming project references it) after creating the replica set with zero members — e.g. AddMongoDBReplicaSet called without adding members via WithMember, or a members count of 0.","commonSituations":"Creating a replica set resource programmatically without adding members; a code path that removes all members before the connection string is resolved at startup; consumer projects binding to the replica set's connection string before WithMember calls complete.","solutions":["Register members on the replica set with WithMember (or pass the intended member count) before the app starts / before anything consumes the connection string.","Check your AppHost code to ensure AddMongoDBReplicaSet is not called with 0 members or members never added due to conditional logic.","If you only need a single server, use AddMongoDB directly instead of an empty replica set."],"exampleFix":"// before\nvar rs = builder.AddMongoDBReplicaSet(\"mongo\", 0);\n\n// after\nvar rs = builder.AddMongoDBReplicaSet(\"mongo\", 3);","handlingStrategy":"validation","validationCode":"if (replicaSet.Members.Count() == 0)\n    throw new InvalidOperationException(\"Replica set must have at least one member before its connection string is used.\");","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always call WithMember (or provide a positive member count) right after AddMongoDBReplicaSet.","Avoid conditional logic that can leave a replica set with zero members.","Use AddMongoDB directly for single-server scenarios."],"tags":["mongodb","replica-set","connection-string","empty-collection"],"backgroundTag":"empty-required-field","analyzedSha":"25830f84bd145686607ad00c057b3f84e2e51d43","analyzedAt":"2026-09-16T11:10:06.193Z","contentChangedAt":"2026-09-16T11:10:06.193Z","schemaVersion":2},"datasetVersion":"2026-09-21T09:17:21.228Z"}