SenseNet / sensenet

Open Source Content Services Platform written in .NET
https://sensenet.com
GNU General Public License v2.0
173 stars 111 forks source link

Invoke function throws an error if it results a Content #2016

Closed kavics closed 4 months ago

kavics commented 5 months ago

The following code throws an exception:

var request = new OperationRequest() { ContentId = 2, OperationName = "GetCurrentUser" };
var user = await repository.InvokeFunctionAsync<User>(request, CancellationToken.None);

Exception:

Newtonsoft.Json.JsonSerializationException: Unable to find a default constructor to use for type SenseNet.Client.User. Path 'd', line 2, position 6.

Stack Trace: 
JsonSerializerInternalReader.CreateDynamic(JsonReader reader, JsonDynamicContract contract, JsonProperty member, String id)
JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
JsonSerializer.Deserialize(JsonReader reader, Type objectType)
JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
JsonConvert.DeserializeObject[T](String value)
<>c__DisplayClass61_0`1.<InvokeFunctionAsync>b__0(String response) line 719
Repository.ProcessOperationResponseAsync(OperationRequest request, HttpMethod method, Action`1 responseProcessor, CancellationToken cancel) line 762
Repository.InvokeFunctionAsync[T](OperationRequest request, CancellationToken cancel) line 716
ContentTests.IT_Op_InvokeFunction_GetCurrentUser() line 621
ThreadOperations.ExecuteWithAbortSafety(Action action)

Please check the IEnumerable return value and similar cases and if there are any errors, they must also be fixed.