在我的WebAPI应用程序中,我试图在Application_BeginRequest基于我的自定义头值将登录记录到多个独立的数据库中。
为了实现这一点,我尝试修改Nlog.config中的目标,如下所示:
在
我尝试使用恒定的连接字符串配置将以下参数写入数据库:
但它们似乎是空的,然而当我调试我的WebApi操作时,抛出了我期望写入数据库的错误,
为了实现这一点,我尝试修改Nlog.config中的目标,如下所示:
<target name="database"
xsi:type="Database"
connectionString="${gdc:item=myConnectionstring}"
commandText="..sql command..">..params..</target>
在
Application_BeginRequest
中,我尝试这样设置myConnectionstring
:GlobalDiagnosticsContext.Set("myConnectionString", connectionString);
但是这并不起作用,在NLog的internalLogFile
中出现了错误:
2015-02-19 12:12:48.8776 Error Error when writing to database System.InvalidOperationException: The ConnectionString property has not been initialized.
at System.Data.SqlClient.SqlConnection.PermissionDemand()
at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.Open()
at NLog.Targets.DatabaseTarget.OpenConnection(String connectionString)
at NLog.Targets.DatabaseTarget.WriteEventToDatabase(LogEventInfo logEvent)
at NLog.Targets.DatabaseTarget.Write(LogEventInfo logEvent)
我尝试使用恒定的连接字符串配置将以下参数写入数据库:
<parameter name="@cn" layout="${gdc:myConnectionstring}"/>
<parameter name="@cn1" layout="${gdc:item=myConnectionstring}"/>
但它们似乎是空的,然而当我调试我的WebApi操作时,抛出了我期望写入数据库的错误,
GlobalDiagnosticsContext.Get("myConnectionString")
返回了期望的值。
我做错了什么?为什么我可以在GlobalDiagnosticsContext.Get("myConnectionString")
看到期望的值,但${gdc:item=myConnectionstring}
解析为空字符串?