0

Je jouer avec Azure SDK de recherche .NET sur le Core .NET (en particulier, le clonage de l'échantillon Github - https://github.com/Azure-Samples/search-dotnet-getting-started)Azure SDK .Net Search lance InvalidOperationException avec SerializationBinder

Lorsque vous entrez dans une opération avec index (, supprimer ...) il jette une exception avec SerializationBinder de Newtonsoft.Json comme celui-ci

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 -- 

Je crois que quelque chose de mal avec le SDK lui-même comme je le repo cloné github public. Est-ce correct?

Répondre

0

Je peux aussi repro la question que vous avez mentionné lorsque je tente d'exécuter DeleteHotelsIndexIfExists fonction si l'indice n'existait. Autres actions telles que Création de l'index, Le chargement des documents fonctionne correctement sur mon côté. Après une enquête, j'ai trouvé que Microsoft.Extensions.Configuration.Json est une version d'aperçu.

Veuillez essayer de mettre à jour vers la dernière version 1.1.2 stable. Ensuite, cela fonctionne correctement de mon côté.

enter image description here

enter image description here

+0

Vous avez raison, il se bloque avec les fonctions ** Existe **. Cependant, la mise à jour ** Microsoft.Extensions.Configuration.Json ** ne fonctionne pas (littéralement rétrograder de 2.0.0-pre, dans le cas de mon projet de travail) –

+0

Si c'est utile, s'il vous plaît marquez cela aidera plus de communautés qui ont le même problème. –

+0

Vous avez raison, nous avons besoin de rétrograder ** Microsoft.Extensions.Configuration.Json **, j'ai également mentionné que l'utilisation lastest ** stable 1.1.2 ** version. –

1

Cela a été causé par un problème de compatibilité connu que beaucoup Azure ont SDKs avec la version JSON.NET 10. Les détails sont here et here.

Ceci a été corrigé dans Microsoft.Azure.Search versions 3.0.5 et 4.0.2-preview.

+0

C'est moi qui l'ai ouvert. Et c'était aussi pour ce problème. –

+1

Je sais, merci pour cela. Je voulais capturer les détails ici pour le bénéfice des autres qui rencontrent ce problème. –

+0

Bruce - Je viens de passer à 3.0.5 et je reçois toujours l'erreur. –