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

C# 序列化HttpContext对象以存储在数据库中,c#,asp.net-mvc-3,serialization,httpcontext,C#,Asp.net Mvc 3,Serialization,Httpcontext,我们有一个C#ASP.NETMVC网站。我想将HttpContext.Current.Request对象中包含的所有内容存储在SQL Server的一个表中,以供以后分析 我尝试将对象序列化为字节数组,然后将其存储在SQL Server中的二进制字段中,但是序列化程序不会序列化HttpContext对象,因为它没有标记为Serializable 有没有办法将System.Web类标记为可序列化的?或者有其他方法来实现这一点吗?我建议不要存储整个请求,因为这样会产生太多的噪音 相反,选择你想要的信

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

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


有没有办法将System.Web类标记为可序列化的?或者有其他方法来实现这一点吗?

我建议不要存储整个请求,因为这样会产生太多的噪音


相反,选择你想要的信号。这就是您感兴趣的日志,例如特定变量。

我建议不要存储整个请求,因为会有太多的噪音


相反,选择你想要的信号。这是您特别感兴趣的日志,例如特定变量。

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


更简单的选择是使用反射来枚举所有公共和私有字段。您可以将简单类型转换为它们的字符串表示形式,并在稍微复杂一点的类上递归。您甚至可以找到一个工具来实现这一点,这个想法可能会被用来询问对象图查看器。

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


更简单的选择是使用反射来枚举所有公共和私有字段。您可以将简单类型转换为它们的字符串表示形式,并在稍微复杂一点的类上递归。您甚至可以找到一个工具来实现这一点,这个想法可能会被用来询问对象图查看器。

花20分钟编写代码以获取所有必要的属性?不可能有那么多。谢谢。你看过了吗?有大量的标题等,重点是,我不知道用户将要提前请求什么,并且希望存储这些内容以供以后分析。当然,标题、post参数、cookies等。好的。。。也许一个小时!别忘了安全。您可能正在存储您不想保留的数据,如表单发布的密码。是否要花20分钟编写代码以获取所有必需的属性?不可能有那么多。谢谢。你看过了吗?有大量的标题等,重点是,我不知道用户将要提前请求什么,并且希望存储这些内容以供以后分析。当然,标题、post参数、cookies等。好的。。。也许一个小时!别忘了安全。你可能正在存储你不想保存的数据,比如表单上的密码。我感兴趣的是这种噪音。标准的东西已经被记录下来了。这是我感兴趣的噪音。标准的东西已经被记录了,好主意。我会考虑使用它!如果这样做有效,我将在稍后标记为答案。干杯@MaxVernon:我认为您需要使用Refexil加载项来进行更改,并且您还必须遍历所有依赖类。不知道如何添加属性,但我相当肯定这是可能的。关于反射器的好主意。我会考虑使用它!如果这样做有效,我将在稍后标记为答案。干杯@MaxVernon:我认为您需要使用Refexil加载项来进行更改,并且您还必须遍历所有依赖类。不知道如何添加属性,但我相当肯定这是可能的。