我正在使用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);
}
}
搜索后,我尝试将?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.'
答案 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));