Azure部署新版本后Serilog失效:Microsoft.Data.SqlClient初始化异常
.NET 4.8项目Serilog日志写入SQL数据库突然失效问题
项目基础信息
负责的.NET 4.8项目通过Azure Pipeline部署,长期使用Serilog将日志写入SQL数据库,相关代码如下:
Serilog初始化逻辑
//Initialize Logger Log.Logger = new LoggerConfiguration() .WriteTo.MSSqlServer( connectionString: ConfigurationManager.ConnectionStrings["SerilogConnection"].ConnectionString, sinkOptions: new MSSqlServerSinkOptions { TableName = "WEB_APIS_LOGS", SchemaName = "dbo", AutoCreateSqlTable = false }, columnOptions: columnOpts ) .CreateLogger();
Serilog使用方式
Log.Logger.Write(logEventLevel, "{Entity}{EntityId}{@ValidationResult}", "SalesOrder", order.OrderId, order.Rules);
问题现象
上周做了一处不涉及日志逻辑的小改动,通过Azure Pipeline部署后,日志功能完全失效。尝试回滚到更早版本,问题依旧;曾怀疑是管道名称修改导致,改回原名后仍无法解决。
排查线索
本地启用Serilog自日志排查,得到错误提示:The type initializer for 'Microsoft.Data.SqlClient.InOutOfProcHelper' threw an exception。不确定这是否仅为本地问题,但这是目前唯一线索。本地能正常连接数据库,且未修改任何项目包,完全无法理解为何此次部署后突然出现问题。这是一年多来的首次新版本发布,但代码和管道均无实质性改动,目前陷入困境。
相关配置信息
Web.config
<system.web> <compilation debug="true" targetFramework="4.8" /> <httpRuntime targetFramework="4.6.1" /> </system.web>
Packages.config
<package id="Microsoft.Data.SqlClient" version="5.0.1" targetFramework="net48" />
内容的提问来源于stack exchange,提问作者SpicyPirate
相关产品推荐
相关产品推荐

