2016-11-24 19 views
1

我有一个线HttpContext.Current无法序列

string serializedContext = JsonConvert.SerializeObject(HttpContext.Current) 

但我在这条线越来越例外。

通过类型'System.Web.HttpContext'检测属性'Context'的自回参考循环。路径'ApplicationInstance'。

我想通过serailized上下文到Web服务。 为什么会检测到自回参考回路,可能有什么办法?

+0

你根本无法做到这一点......更重要的是,你将无法将其另一端水合成工作状态......只发送必要的数据就是解决方案。 –

+0

为什么你要序列化当前的HttpContext? –

+1

这可能是一个X-Y问题。你试图达到的最终目标是什么? – Nkosi

回答

-2

你可以试试:

string serializedContext = JsonConvert.SerializeObject(HttpContext.Current, Formatting.Indented, 
new JsonSerializerSettings { 
     ReferenceLoopHandling = ReferenceLoopHandling.Ignore 
}); 
0

的误解:

序列化的背景和反序列化它的另一面是没有语义意义:如果你把它发送到远程Web服务它将拥有自己的http上下文。

解决该问题的 相反,你可能想要做的是:创建一个新的对象只需要在远程Web服务使用数据。

不要认为它是一个上下文,把它看作是一个数据传输对象,它包含了在另一边完成工作所需的所有事情。

其他注意事项

你可能会认为这是痛苦的主要创建包含相同的数据作为您的HttpContext一个新的对象,但可以减轻通过复制一个对象的值,以其他的沉闷使用AutoMapper以便将值从一个对象复制到另一个对象,而无需自己编写代码(这是基于约定的)。

希望这会有所帮助。