2016-11-24 41 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以便將值從一個對象複製到另一個對象,而無需自己編寫代碼(這是基於約定的)。

希望這會有所幫助。