Пакет SDK для поиска Azure .Net выдает исключение InvalidOperationException с помощью SerializationBinder.

Я играю с Azure Search .NET SDK на .NET Core (в частности, клонирую образец из Github - https://github.com/Azure-Samples/search-dotnet-getting-started)

При вводе любой операции с индексом (создание, удаление ...) он выдает исключение с SerializationBinder из Newtonsoft.Json, как это

System.InvalidOperationException: Cannot get SerializationBinder because an ISerializationBinder was previously set.    at Newtonsoft.Json.JsonSerializer.get_Binder()    
--- End of inner exception stack trace ---    
    at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)    
    at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)    
    at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)   
    at Microsoft.Rest.Azure.JsonSerializerExtensions.WithoutConverter(JsonSerializer serializer, JsonConverter converterToExclude)    
    at Microsoft.Rest.Azure.CloudErrorJsonConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer)    
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)   
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)    
    at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)    
    at Microsoft.Rest.Serialization.SafeJsonConvert.DeserializeObject[T](String json, JsonSerializerSettings settings)    at Microsoft.Azure.Search.IndexesOperations.<GetWithHttpMessagesAsync>d__12.MoveNext()
    --- End of stack trace from previous location where exception was thrown ---    
        at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)    at Microsoft.Azure.Search.ExistsHelper.<ExistsFromGetResponse>d__0`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)    at Microsoft.Azure.Search.IndexesOperationsExtensions.<ExistsAsync>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown --

Я считаю, что что-то не так с самим SDK, поскольку я клонировал общедоступное репозиторий github. Это правильно?


person Nhan Nguyen    schedule 01.07.2017    source источник


Ответы (2)



Я также могу воспроизвести проблему, о которой вы упомянули, когда пытаюсь выполнить функцию DeleteHotelsIndexIfExists, если индекс не существует. Другие действия, такие как Создание индекса, Загрузка документов, на моей стороне работают правильно.

После некоторого расследования я обнаружил, что Microsoft.Extensions.Configuration.Json является предварительной версией.

Пожалуйста, попробуйте обновить до последней стабильной версии 1.1.2. Тогда он корректно работает на моей стороне.

введите здесь описание изображения

введите здесь описание изображения

person Tom Sun - MSFT    schedule 03.07.2017
comment
Вы правы, он вылетает с функциями Exists. Однако обновление Microsoft.Extensions.Configuration.Json не работает (буквально откат с 2.0.0-pre, в случае моего рабочего проекта) - person Nhan Nguyen; 04.07.2017
comment
Если это полезно, отметьте, что это поможет большему количеству сообществ, у которых есть такая же проблема. - person Tom Sun - MSFT; 04.07.2017
comment
Вы правы, нам нужно перейти на более раннюю версию Microsoft.Extensions.Configuration.Json, я также упомянул, что используется самая последняя стабильная версия 1.1.2. - person Tom Sun - MSFT; 04.07.2017
comment
Я могу подтвердить, что ваше решение работает с образцом репозитория, но я считаю, что это не настоящая причина исключения. Я открыл проблему, и команда уже предложила обходной путь . Надеюсь, они скоро это сделают. - person Nhan Nguyen; 04.07.2017