如何在Mongo中修复retryWrites?

时间:2019-09-07 18:02:33

标签: c# mongodb

我正在使用mlab.com mongoDB,我可以对其进行查询,但无法插入其中

那是我的课程

public class Main
{
    private MongoUrl _url;
    private MongoClient _client;

    public Main(MongoUrl url)
    {
        url = new MongoUrl("mongodb://username:password@ds062807.mlab.com:62807/robobalancedb");
        _url = url;
        _client = new MongoClient(_url);
    }

    public async Task Login([Option]string username, [Option]string password)
    {

        var db = _client.GetDatabase("robobalancedb");

        var col = db.GetCollection<User>("users"); 

        var user = await (await col.FindAsync(x => x.Name == username && x.Password == password)).FirstOrDefaultAsync();

    }

    public async Task Supply([Option(ShortName="u")] string username, [Option(ShortName="a")]double amount, [Option(ShortName="d")]string description)
    {

        var db = _client.GetDatabase("robobalancedb");
        var col = db.GetCollection<OwnerSupply>("ownersupplies");

        var supply = new OwnerSupply(){
            Amount = amount,
            Description = description
        };

        await col.InsertOneAsync(supply);
    }
}

异常

https://imgur.com/a/cSKNelR

搜索后,我尝试将?retryWrites = true添加到我的连接字符串中 mongodb://username:password@ds062807.mlab.com:62807/?retryWrites=true/robobalancedb

我有例外

MongoDB.Driver.MongoConfigurationException:'retryWrites具有无效的布尔值false / robobalancedb。'

并尝试通过

在_client字段中设置RetryWrites
_client.Settings.RetryWrites = false; 

得到异常 System.InvalidOperationException: 'MongoClientSettings is frozen.'

2 个答案:

答案 0 :(得分:4)

我通过在连接字符串的末尾放置retryWrites=false来解决了这个问题

mongodb://username:password@ds062807.mlab.com:62807/robobalancedb?retryWrites=false

答案 1 :(得分:1)

我修复了它,而没有触及代码中的连接字符串:

var url = new MongoUrl(Configuration.GetValue<string>("MongoConnection"));
var mongoClientSettings = MongoClientSettings.FromUrl(url);
mongoClientSettings.RetryWrites = false;
services.AddSingleton<IMongoClient>(new MongoClient(mongoClientSettings));