我有一条线
string serializedContext = JsonConvert.SerializeObject(HttpContext.Current)
但是我在这条线上有例外。
使用类型为" system.web.httpcontext"的属性"上下文"检测到的自引用循环。路径" application -instance"。
我试图将串行的上下文传递给Web服务。为什么要检测到自我引用循环?
误解:
序列化您的上下文并在另一侧进行除外的序列化没有说明:如果将其发送到远程Web服务,它将具有自己的HTTP上下文。
解决问题取而代之的是,您可能想做的是:创建一个新对象,只需使用您需要在远程Web服务上使用的数据。
不要将其视为上下文,而是将其视为包含在另一侧完成工作所需的所有内容的数据传输对象。
其他注意事项
您可能会认为基本上创建一个与您的httpcontext相同数据的新对象是很痛苦的,但是您可以通过使用AutoMapper通过使用AutoMapper来复制将值从一个对象复制到另一个对象的乏味,以便从一个对象一个对象而无需自己编写代码(这是基于常规的)。
希望这会有所帮助。
您可以尝试:
string serializedContext = JsonConvert.SerializeObject(HttpContext.Current, Formatting.Indented,
new JsonSerializerSettings {
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
});