ASP.NET(Blazor)中Serilog.Sinks.MongoDB如何在appsettings.json设置数据库名
Serilog.Sinks.MongoDB databaseName配置不生效解决方案
核心原因:Serilog.Sinks.MongoDB的配置优先级中,MongoDB连接字符串内指定的数据库名优先级高于单独配置的databaseName参数。你当前使用的连接字符串mongodb+srv://AtlasUser:XXXXXXX/test?retryWrites=true&w=majority&ssl=true中,路径段的test就是显式指定了默认数据库为test,因此你单独配置的databaseName: "MyLogs"会被覆盖,无法生效。
可选解决方案
- 方案1:直接修改连接字符串内的数据库名
把连接字符串中的test替换为目标库名MyLogs即可,databaseName参数可保留也可删除,连接字符串内的配置会优先生效。修改后的配置示例:
{ "Name": "MongoDB", "Args": { "databaseUrl": "mongodb+srv://AtlasUser:XXXXXXX/MyLogs?retryWrites=true&w=majority&ssl=true", "databaseName": "MyLogs", "collectionName": "MyLoggerCollection", "cappedMaxSizeMb": "1024", "cappedMaxDocuments": "50000" } }
- 方案2:删除连接字符串内的数据库名声明,让
databaseName参数生效
将连接字符串中@符号后、参数前缀?之前的数据库名段删除,保留根路径即可,此时单独配置的databaseName参数会正常生效。修改后的配置示例:
{ "Name": "MongoDB", "Args": { "databaseUrl": "mongodb+srv://AtlasUser:XXXXXXX/?retryWrites=true&w=majority&ssl=true", "databaseName": "MyLogs", "collectionName": "MyLoggerCollection", "cappedMaxSizeMb": "1024", "cappedMaxDocuments": "50000" } }
内容的提问来源于stack exchange,提问作者nogood
相关产品推荐
相关产品推荐

