Исключение десериализации Blazor WebAPI to Client (PocoJsonSerializerStrategy) - PullRequest
0 голосов
/ 12 июня 2019

Я могу сгенерировать прокси (используя VS 2017) через сервис Nuget службы коннектора Microsoft OData. Это генерирует прокси просто отлично.

Однако, когда я пытаюсь отправить объект по проводам на сторону клиента, я получаю исключение десериализации. Есть ли какие-либо технические проблемы с использованием сервисных ссылок / сгенерированных прокси объектов / моделей данных?

Ниже приведено исключение, которое мне удалось зафиксировать при получении полезных данных из моего веб-API для клиента.

System.Reflection.TargetParameterCountException: количество параметров указанное не соответствует ожидаемому числу. в System.Reflection.RuntimeMethodInfo.ConvertValues (Связыватель System.Reflection.Binder, аргументы System.Object [], System.Reflection.ParameterInfo [] pinfo, System.Globalization.CultureInfo culture, System.Reflection.BindingFlags invokeAttr) <0x34ba990 + 0x00038> в : 0 в System.Reflection.RuntimeConstructorInfo.DoInvoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder связыватель, параметры System.Object [], System.Globalization.CultureInfo культура) <0x36f4b28 + 0x0003a> в: 0 в System.Reflection.RuntimeConstructorInfo.Invoke (System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder связыватель, параметры System.Object [], System.Globalization.CultureInfo культура) <0x36f49e8 + 0x00016> в: 0 в System.Reflection.ConstructorInfo.Invoke (System.Object [] параметры) <0x36f4898 + 0x00016> в : 0 в SimpleJson.Reflection.ReflectionUtils + <> c__DisplayClass25_0.b__0 (System.Object [] args) <0x3e4a758 + 0x00010> в <8f8c03446dbf45f5bbcb1e109a064f6e>: 0 at (вызов делегата оболочки) .invoke_object_object at SimpleJson.PocoJsonSerializerStrategy.DeserializeObject (System.Object значение, тип System.Type) <0x37ccce8 + 0x00a82> в <8f8c03446dbf45f5bbcb1e109a064f6e>: 0 в SimpleJson.PocoJsonSerializerStrategy.DeserializeObject (System.Object значение, тип System.Type) <0x37ccce8 + 0x00862> в <8f8c03446dbf45f5bbcb1e109a064f6e>: 0 в SimpleJson.PocoJsonSerializerStrategy.DeserializeObject (System.Object значение, тип System.Type) <0x37ccce8 + 0x00aca> в <8f8c03446dbf45f5bbcb1e109a064f6e>: 0 в SimpleJson.PocoJsonSerializerStrategy.DeserializeObject (System.Object значение, тип System.Type) <0x37ccce8 + 0x00862> в <8f8c03446dbf45f5bbcb1e109a064f6e>: 0 в SimpleJson.SimpleJson.DeserializeObject (System.String json, Тип System.Type, SimpleJson.IJsonSerializerStrategy jsonSerializerStrategy) <0x37b6130 + 0x00068> в <8f8c03446dbf45f5bbcb1e109a064f6e>: 0 в SimpleJson.SimpleJson.DeserializeObject [T] (System.String json) <0x3f8b148 + 0x0000a> в <8f8c03446dbf45f5bbcb1e109a064f6e>: 0 в Microsoft.JSInterop.Json.Deserialize [T] (System.String json) <0x3f8b110 + 0x00004> в <8f8c03446dbf45f5bbcb1e109a064f6e>: 0 в Microsoft.AspNetCore.Components.HttpClientJsonExtensions.GetJsonAsync [Т] (System.Net.Http.HttpClient httpClient,

Решено

удалось решить эту проблему, предложив Хенку сериализацию с использованием Newstonsoft.Json.

1 Ответ

1 голос
/ 12 июня 2019

Не знаю, так ли это, но мой опыт работы с Blazor 0.7, все еще работающим над приложением для магистерской диссертации, заключается в том, что вы не можете ни отправлять, ни получать вложенный объект сразу.У меня есть Person в моей базе данных, и у этого Person есть несколько магазинов, поэтому сущность отображает его в объект, похожий на этот Person{ id:int, name:string, lastName:string, stores:List<Store>} , Store{id:int, name:string, personId:int}, и сначала нужно было найти person, а затем перейти в базу данных с id человека, чтобы получить магазины для этого человека.Не знаю, почему, но думаю, что в этой версии это невозможно.

...