c# - Serilog 无法登录我的本地数据库

标签 c# asp.net database logging serilog

我正在尝试使用 Serilog 登录我的 .NET 项目,但我注意到错误没有写入数据库。我打开 Serilog 的 SelfLog,这是显示的错误:

2022-11-01T15:58:26.9744639Z 由于以下错误,无法将 1 个日志事件写入数据库:已成功与服务器建立连接,但在登录过程中发生错误。 (提供程序:SSL 提供程序,错误:0 - 证书链由不受信任的机构颁发。)

这是我在 Program.cs 中对 Serilog 的设置:

var columnOptions = new ColumnOptions();
        columnOptions.Store.Remove(StandardColumn.Properties);
        columnOptions.Store.Remove(StandardColumn.MessageTemplate);
        columnOptions.TimeStamp.NonClusteredIndex = true;
Log.Logger = new LoggerConfiguration()
                    .ReadFrom.Configuration(Config)
                    .Enrich.FromLogContext()
                    .Enrich.WithExceptionDetails()
                    .WriteTo.Console()
                    .WriteTo.MSSqlServer(
                            connectionString: Config.GetSection("DbConfiguration")["ConnString"],
                            sinkOptions: new MSSqlServerSinkOptions
                            {
                                TableName = Config.GetSection("Serilog")["TableName"],
                                SchemaName = "dbo",
                                AutoCreateSqlTable = false,
                                BatchPeriod = TimeSpan.FromMilliseconds(5)
                            },
                            columnOptions: columnOptions
                        )
                    .CreateLogger();

我已经确认我给 Serilog 的连接字符串与我通常用来访问数据库的连接字符串相同,并且我正在手动创建表,但是即使我将其设置为 true 并让 Serilog 自动创建它,它会抛出相同的无法登录的错误。我在网上的其他页面上找到了关于此错误的类似版本,但我找不到涉及 Serilog 的版本,并且其他页面与我正在做的事情无关。

有人可以帮助我了解发生了什么事吗?

最佳答案

从 Serilog.Sinks.MSSqlServer v5 开始,它使用 Microsoft.Data.SqlClient而不是 System.Data.SqlClient 来与 SQL Server 对话。 Starting with v4 of Microsoft.Data.SqlClient默认启用加密,并验证用于加密的证书的有效性。您有多种选择:

当您更新自己的代码以使用 Microsoft.Data.SqlClient 而不是 System.Data.SqlClient 时,您可能会遇到相同的问题。现在不妨硬着头皮使用您的机器信任的证书。

关于c# - Serilog 无法登录我的本地数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74294286/

相关文章:

c# - 当我需要编辑的版本时,DataGrid.ItemsSource 返回旧数据

asp.net 尝试在 vs 2012 中创建发布设置会出现奇怪的错误

c# - 在具有 Datetime 数据类型的列上使用 C# 对数据集进行排序

php - 显示 MySQL 数据库中与 ID 相关的单个条目

java - JDBC/数据库单元测试的最佳实践

c# - 创建一个 nullable<T> 扩展方法,你是怎么做到的?

c# - 为什么我的程序在调用委托(delegate)后立即崩溃?

c# - 解决文件路径太长异常的最佳方法

asp.net - 可变中继器列

sql - 将主键更改为新的 id 列