string serializedContext = JsonConvert.SerializeObject(HttpContext.Current)
但我在这条线越来越例外。
通过类型'System.Web.HttpContext'检测属性'Context'的自回参考循环。路径'ApplicationInstance'。
我想通过serailized上下文到Web服务。 为什么会检测到自回参考回路,可能有什么办法?
string serializedContext = JsonConvert.SerializeObject(HttpContext.Current)
但我在这条线越来越例外。
通过类型'System.Web.HttpContext'检测属性'Context'的自回参考循环。路径'ApplicationInstance'。
我想通过serailized上下文到Web服务。 为什么会检测到自回参考回路,可能有什么办法?
你可以试试:
string serializedContext = JsonConvert.SerializeObject(HttpContext.Current, Formatting.Indented,
new JsonSerializerSettings {
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
});
的误解:
序列化的背景和反序列化它的另一面是没有语义意义:如果你把它发送到远程Web服务它将拥有自己的http上下文。
解决该问题的 相反,你可能想要做的是:创建一个新的对象只需要在远程Web服务使用数据。
不要认为它是一个上下文,把它看作是一个数据传输对象,它包含了在另一边完成工作所需的所有事情。
其他注意事项
你可能会认为这是痛苦的主要创建包含相同的数据作为您的HttpContext一个新的对象,但可以减轻通过复制一个对象的值,以其他的沉闷使用AutoMapper以便将值从一个对象复制到另一个对象,而无需自己编写代码(这是基于约定的)。
希望这会有所帮助。
你根本无法做到这一点......更重要的是,你将无法将其另一端水合成工作状态......只发送必要的数据就是解决方案。 –
为什么你要序列化当前的HttpContext? –
这可能是一个X-Y问题。你试图达到的最终目标是什么? – Nkosi