2015-01-28 6 views
1

Я интегрирую Hangfire в свой проект. Я получил исключение из Newtonsoft.Json.Serialization в BackgroundJob.Enqueue, как показано ниже. Может ли кто-нибудь сказать мне, как устранить эту проблему?Исключение из Newtonsoft.Json.Serialization

Обнаружен собственный цикл ссылок для свойства «ApplicationInstance» с типом «ASP.global_asax». Путь 'NamingContainer.Page.ModelBindingExecutionContext.HttpContext.ApplicationInstance.Context'.

на Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CheckForCircularReference (JsonWriter автор, значение объекта, JsonProperty собственности, JsonContract контракта, JsonContainerContract containerContract, JsonProperty containerProperty) на Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues ​​(JsonWriter автор, значение объекта , JsonContainerContract контракт, член JsonProperty, JsonProperty недвижимость, JsonContract & memberContract, объект & memberValue) на Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject (JsonWriter автор, значение объекта, JsonObjectContract контракта, член JsonProperty, JsonContainerContract collectionContract, JsonProperty containerProperty) в Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue (JsonWriter автор, значение объекта, JsonContract valueContract, член JsonProperty, JsonContainerContract containerContract, JsonProperty containerProperty) в Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject (JsonWriter писателя, значение объекта, JsonObjectContract контракта , член JsonProperty, JsonContainerContract collectionContract, JsonProperty containerProperty) на Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue (JsonWriter автор, значение объекта, JsonContract valueContract, член JsonProperty, JsonContainerContract containerContract, JsonProperty containerProperty) на Newtonsoft.Json.Serialization.JsonSerializerInternalWriter. SerializeObject (JsonWriter writer, Object value, JsonObjectContract, член JsonProperty, JsonContainerContract collectionCon кишечного тракта, JsonProperty containerProperty) на Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue (JsonWriter автор, значение объекта, JsonContract valueContract, член JsonProperty, JsonContainerContract containerContract, JsonProperty containerProperty) на Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject (JsonWriter автор, значение объекта, договор JsonObjectContract, член JsonProperty, JsonContainerContract collectionContract, JsonProperty containerProperty) на Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue (JsonWriter автор, значение объекта, JsonContract valueContract, член JsonProperty, JsonContainerContract containerContract, JsonProperty containerProperty) в Newtonsoft.Json .Serialization.JsonSerializerInternalWriter.SerializeObject (JsonWriter writer, значение Object, JsonObjectContract контракт, член JsonProperty, JsonContainerContract collectionContract, JsonProperty containerProperty) на Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue (JsonWriter автор, значение объекта, JsonContract valueContract, член JsonProperty, JsonContainerContract containerContract, JsonProperty containerProperty) в Newtonsoft.Json.Serialization.JsonSerializerInternalWriter .SerializeObject (JsonWriter автор, значение объекта, JsonObjectContract контракт, член JsonProperty, JsonContainerContract collectionContract, JsonProperty containerProperty) на Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue (JsonWriter автор, значение объекта, JsonContract valueContract, член JsonProperty, JsonContainerContract containerContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Se rializeObject (JsonWriter writer, Object value, JsonObjectContract, член JsonProperty, JsonContainerContract collectionContract, JsonProperty containerProperty) в Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue (JsonWriter автор, значение объекта, JsonContract valueContract, член JsonProperty, JsonContainerContract containerContract, JsonProperty containerProperty) на Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize (JsonWriter jsonWriter, значение объекта, тип ObjectType) в Newtonsoft.Json.JsonSerializer.SerializeInternal (JsonWriter jsonWriter, значение объекта, тип ObjectType) в Newtonsoft.Json.JsonConvert.SerializeObject (значение объекта, тип Type, форматирование, форматирование JsonSerializerSettings настроек) на Hangfire.Common.Job.GetArguments (MethodCallExpression) значение вложенного ВыраженияCall в Hangfire.Common .Job.FromExpression (выражение 1 methodCall) at Hangfire.BackgroundJobClientExtensions.Create(IBackgroundJobClient client, Expression 1 methodCall, состояние IState) at Hangfire.BackgroundJobClientExtensions.Enqueue (клиент IBackgroundJobClient, выражение 1 methodCall) at Hangfire.BackgroundJob.Enqueue(Expression 1 methodCall)

+1

Вы должны использовать JsonSerializerSettings. – Aria

ответ

0

Я обнаружил, что проблема возникла из параметра, который не сериализуется. Теперь я решил свою проблему. все работает хорошо. Всем спасибо.

0

Я получил эту ошибку (не связанную с замедленное воспламенение), потому что у меня был метод контроллера:

public async Task<IHttpActionResult> MyAction(...) 

и я возвращался к ActionResult завернутую в другой ActionResult, например, так:

return Ok(await Get(Id)); 

. .. где Get(Id) было еще одним действием на контроллере.

Я изменил возвратное заявление:

return await Get(Id); 

И это устраняет проблему. Свойство ApplicationInstance, упомянутое в ошибке, является подсказкой, в которой я нуждался: контроллер не сериализует мой объект POCO из метода Get; он сериализует IHttpActionResult, который содержит этот POCO!