NLog 获取当前用户导致出现错误

NLog getting current user causes error to appear

这是我的目标

<target xsi:type="Database" name="database"
   connectionString="${var:connectionString}"
   commandText="INSERT INTO [AppOne].[EventLogs](Id, Message, Level, Logger, Action,Identity)VALUES(NewID(), @Message, @Level, @Logger, @Action,@Identity)">
<parameter name="@Message" layout="${message}" />
<parameter name="@Level" layout="${level}" />
<parameter name="@Logger" layout="${logger}" />
<parameter name="@Action" layout="${aspnet-mvc-action}"/>
<parameter name="@Identity" layout="${aspnet-user-identity}"/>

我也把这一行放在我的 Startup.cs

services.AddSingleton<Microsoft.AspNetCore.Http.IHttpContextAccessor, HttpContextAccessor>();

但是,当我 运行 我的应用程序并尝试记录一个项目时,我在内部日志中收到此错误:

Error DatabaseTarget(Name=database): Error when writing to database. Exception: System.Data.SqlClient.SqlException (0x80131904): Incorrect syntax near the keyword 'Identity'.

我正在使用 Asp.net Core 2.1。我尝试搜索文档,它看起来只支持 asp.net?

您使用关键字作为列名,如果可以避免此类问题的发生,我会避免这样做。但是,您可以通过将关键字括在方括号中来解决错误,因此您的 SQL 应该是

INSERT INTO [AppOne].[EventLogs](Id, [Message], [Level], Logger, [Action],[Identity])VALUES(NewID(), @Message, @Level, @Logger, @Action,@Identity)