Serilog Net Core其他专栏问题 - c#

我正在将Serilog SQL Server Sink用于.NET Core 2。

我已经在Serilog.LoggerProgram.cs中都配置了Startup.cs,如下所示:

ColumnOptions columnOptions = new ColumnOptions();

columnOptions.AdditionalDataColumns = new System.Collections.Generic.List<DataColumn>();
columnOptions.AdditionalDataColumns.Add(new DataColumn() { ColumnName = "UserId", DataType = typeof(string) });            
Log.Logger = new LoggerConfiguration()               
   .WriteTo.MSSqlServer("Data Source=TS-ABC\\SQLExpress;Initial Catalog=XYZ;Integrated Security=True",
    "ActivityLogs", columnOptions: columnOptions, autoCreateSqlTable: false, restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Debug)
.CreateLogger();

Sstartup.cs中:

services.AddSingleton<Serilog.ILogger>(x =>
{
    ColumnOptions columnOptions = new ColumnOptions();

    columnOptions.AdditionalDataColumns = new System.Collections.Generic.List<DataColumn>();                
    columnOptions.AdditionalDataColumns.Add(new DataColumn() { ColumnName = "UserId", DataType = typeof(string) });

    return new LoggerConfiguration().WriteTo.MSSqlServer(Configuration["Data:DefaultConnection:ConnectionString"], Configuration["Serilog:TableName"], autoCreateSqlTable: false, columnOptions: columnOptions, restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Debug).CreateLogger();
});

UserIdstring类型,并且允许空值。这也是ActivityLogs表中的FK。

这就是我记录信息的方式:

Log.Information("This has properties attached");

只要添加其他列"UserId",该代码就可以正常工作。 UserId列已经存在于我的数据库中。

这是我在Visual Studio的输出窗口中看到的错误:

由于以下错误,无法将50个日志事件写入数据库:字典中不存在给定的键。

现在更新为Serilog.Sinks.MSSqlServer nuget软件包后,我收到以下错误,并且没有任何内容记录在DB中。

由于以下错误,无法将1个日志事件写入数据库:给定的ColumnMapping与源或目标中的任何列都不匹配。

任何解决方案,提示或解决方法将不胜感激。

参考方案

.net核心的不可为空的附加列的问题。将您的字段设置为可空。

如何在ASP.NET Page_Load事件中识别RadButton启动回发的原因? - c#

在我的ASP.NET页的Page_Load中,我试图确定某个按钮是否已单击并尝试回发:if (Page.IsPostBack) { if (Request.Params.Get("__EVENTARGUMENT") == "doStuff") doSomething(); } doStuff是标记内的JavaScrip…

java.net.URI.create异常 - java

java.net.URI.create("http://adserver.adtech.de/adlink|3.0") 抛出java.net.URISyntaxException: Illegal character in path at index 32: http://adserver.adtech.de/adlink|3.0 虽然n…

如何将POCO类传递给.NET Core配置 - c#

我正在进行.NET Core应用程序的集成测试,并且想要使用一些测试配置。我的配置是一个POCO类,该类通过appsettings.json配置,然后通过IOptions<T>使用。在我的测试中,我想使用该类的实例。这是代码: var mySettings = GetTestSettings(); // factory method return…

弹出不去发布在asp.net - c#

我有一个叫做sales的按钮,当我单击cancel it backback并插入表单中的值时,它有一个JavaScript弹出窗口,但是当我单击ok时,它不会回发,并且表单中的值也不会进入数据库( JavaScript按钮实际上是打印调用,当单击该按钮时,它会在打印对话框打开时要求打印,它不会回发并且数据库中未插入数据)这是JavaScript代码funct…

如何在.net core中调用带参数的动作? - c#

因此,我在Startup.cs中设置了以下默认模式:app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller}/{action}/{id?}"); }); 这是我的控制器…