C# - Получение объекта любого типа в Service Fabric RPC Service
Существует служба Service Fabric Rest (http), которая предоставляет конечную точку POST, которая заключает контракт с именем Action и имеет словарь. Служба принимает действие и вызывает службу RPC Service Fabric для выполнения операции создания действия.
public class Action{
public Dictionary<string, object> actions {get; set;}
}
Когда для типа объекта передается любой тип, кроме примитивов (массив, словарь), конечная точка Rest должным образом десериализует json, но на месте происходит сбой при попытке вызвать службу RPC со следующим сообщением об ошибке
Newtonsoft.Json.Linq.JToken'- это контракт на рекурсивный сбор данных, который не поддерживается. Попробуйте изменить определение коллекции 'Newtonsoft.Json.Linq.JToken', чтобы удалить ссылки на себя.
Мы также попытались использовать динамический и ExpandoObject вместо объекта. Это также, кажется, не помогает.
Кто-нибудь сталкивался с этой проблемой при передаче объектов или динамических типов в RPC Services?
1 ответ
Служба удаленного взаимодействия работает с DataContractSerializer. Все типы, которые вы используете в сервисном контракте, должны быть сериализуемы этим. Тип JToken
нет, потому что он имеет свойства одного типа.