序列化HttpContext对象以存储在数据库中

时间:2012-10-12 11:27:57

标签: c# asp.net-mvc-3 serialization httpcontext

我们有一个C#ASP.Net MVC网站。我想将HttpContext.Current.Request对象中包含的所有内容存储在SQL Server的表中,以供以后分析。

我尝试将对象序列化为字节数组,然后将其存储在SQL Server的二进制字段中,但序列化程序不会序列化HttpContext对象,因为它未标记为Serializable

有没有办法将System.Web类标记为可序列化?或者还有另一种方法可以实现这一目标吗?

2 个答案:

答案 0 :(得分:1)

对于生产代码,我不相信您可以更改HttpContext的序列化方面。如果这是非生产的,您可以尝试使用Reflector和一些插件等工具修改Assembly以插入Serializable属性(但也可能需要在子类上完成)。

可能更容易的选择是使用Reflection来枚举所有公共和私有字段。您可以将简单类型转换为其字符串表示形式,并对稍微复杂的类进行递归。你甚至可以找到一个工具来做这个,这个想法可能会被提到问一个对象图形查看器。

答案 1 :(得分:0)

我建议不要存储整个请求,否则会有太多噪音。

而是挑选出你想要的信号。这是特别记录您感兴趣的内容,例如特殊变量。