所以我是一个非常业余的程序员,试图按照一些例子为我正在研究的这个应用程序创建一个小型的审计系统。
我们在C#.NET 4.0之上使用的框架(StrataFrame)要求将审计值存储为字节数组。我跟着他们论坛的一个小例子让我这样做了;
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
System.IO.MemoryStream outstream = new System.IO.MemoryStream();
foreach (DataColumn dc in jobHeaderBO1.CurrentDataTable.Columns)
{
if (!dr[dc.ColumnName, DataRowVersion.Original].Equals(dr[dc.ColumnName, DataRowVersion.Current]))
{
formatter.Serialize(outstream, dr[dc.ColumnName, DataRowVersion.Current] + " " + dr[dc.ColumnName, DataRowVersion.Original]);
Auditor.ShouldAuditDataChanges(jobHeaderBO1);
Auditor.InsertAuditEvent("JOB HEADER", dc.ColumnName + " changed.", outstream.ToArray());
Auditor.InsertAuditRecords(jobHeaderBO1);
}
}
因此,所有工作都可以告诉我 - 记录被插入到适当的表中,当我看到它时,它是一堆垃圾。所以现在我需要向用户提供垃圾!
我发现了一些例子,说只做了以下事情:
string oldv = System.Text.Encoding.UTF8.GetString(adf.adf_OldValue);
string newv = System.Text.Encoding.UTF8.GetString(adf.adf_NewValue);
当我打印出oldv和newv时,值无法正确显示。存储文本的一些字段大多显示正常,但日期和数字不显示。我想问题是我不知道它是什么类型的编码,我也找不到。有什么建议吗?