NLog问题使用WCF C#.NET将对象写入数据库
我目前在使用NLog将XML值写入数据库表时遇到问题。我正在使用WCF和C# 我有一个正在写入数据库的请求XML对象,如果我按如下方式使用内置的“消息”对象,它会工作: NLog.ConfigNLog问题使用WCF C#.NET将对象写入数据库,c#,nlog,C#,Nlog,我目前在使用NLog将XML值写入数据库表时遇到问题。我正在使用WCF和C# 我有一个正在写入数据库的请求XML对象,如果我按如下方式使用内置的“消息”对象,它会工作: NLog.Config <parameter name="@message" layout="${message}" /> 但如果我尝试将其写入另一个字段,例如: 它不会将对象的值写入表,但是: “MyServices.Types.Request” 请求类型为: namespace MyServices.Typ
<parameter name="@message" layout="${message}" />
但如果我尝试将其写入另一个字段,例如:
它不会将对象的值写入表,但是:
“MyServices.Types.Request”
请求类型为:
namespace MyServices.Types
{
[DataContract]
public class Request
{
[DataMember]
public string MessageHeader { get; set; }
[DataMember]
public int EventType { get; set; }
[DataMember]
public string Identification { get; set; }
[DataMember]
public DateTime VisitDate { get; set; }
}
}
这有什么原因吗?“Message”属性似乎工作正常(这是旧NLog版本的答案。有关最新信息,请参阅Rolf的答案)
即使使用结构化日志记录,事件属性也不会转换为结构化格式,而是使用ToString
目前只支持JSON序列化,不支持XML
有关更多选项和示例,请参见。NLog 4.6允许您将XML呈现到数据库目标:
<parameter name="@Request" DbType="SqlDbType.Xml">
<layout type="xmllayout" includeAllProperties="true" />
</parameter>
NLog 4.6还允许您为参数设置DbType。请参见嗨,谢谢你的帮助。我已经尝试了以上两个例子,但不幸的是仍然得到相同的输出。“MyServices.Types.Request”。您可以尝试将其记录到文件中吗?当我登录到一个文件时,向我们显示MyServices.Types.Requestsame类型可能也很有用。我用类型定义更新了这个问题,它确实错了。更新了答案,但目前只支持JSON
<parameter name="@Request" DbType="SqlDbType.Xml">
<layout type="xmllayout" includeAllProperties="true" />
</parameter>