Impossible de renvoyer Dictionary (Of Ssortingng, Ssortingng) via une requête Web GET ajax, fonctionne avec POST

J’ai la méthode web suivante:

 _  _ Public Function GetDictionary() As Dictionary(Of Ssortingng, Ssortingng) Dim d As New Dictionary(Of Ssortingng, Ssortingng) d.Add("key1", "value1") d.Add("key2", "value2") Return d End Function 

Je peux récupérer les résultats très bien (JSON) si j’utilise HttpPost à partir de mon appel ajax, mais dès que j’utilise HttpGet, j’obtiens l’exception suivante:

System.NotSupportedException: le type System.Collections.Generic.Dictionary`2 [[System.Ssortingng, mscorlib, version = 2.0.0.0, culture = neutre, PublicKeyToken = b77a5c561934e089], [System.Ssortingng, mscorlib, version = 2.0.0 , Culture = neutre, PublicKeyToken = b77a5c561934e089]] n’est pas pris en charge car il implémente IDictionary

Je voulais utiliser HttpGet ici pour que le résultat puisse être mis en cache.

J’ai essayé chaque variante d’appeler cela, mais pas de chance. Des idées? Est-ce possible avec GET?

Je suis un peu confus. Si ResponseFormat est JSON (comme dans l’exemple ci-dessus), les dérivés d’IDictionary doivent être pris en charge . Cependant, si c’est du XML, je pourrais comprendre de voir cette erreur car XmlSerializer ne le prend pas en charge.

Une option pour envoyer un type de dictionnaire à l’aide de XmlSerializer consiste à implémenter une logique pour le convertir en tableau ou en liste ou en tableau. Vous pouvez également implémenter un sérialiseur personnalisé pour les données et écrire votre propre code XML, en renvoyant un XmlDocument à partir de votre méthode. Cela vous permettrait de formater les données comme bon vous semble.

Peut-être pourriez-vous préciser si vous utilisez JSON ou XML?

Une autre alternative consiste à changer le type de renvoi en chaîne, puis à convertir le dictionnaire en JSON via JavaScriptSerializer.Serialize . Ce n’est peut-être pas exactement ce que vous aviez l’intention de renvoyer un dictionnaire, mais il s’agira de paires clé = valeur dans la réponse JSON.

  _  _ Public Function GetDictionary() As Ssortingng Dim d As New Dictionary(Of Ssortingng, Ssortingng) d.Add("key1", "value1") d.Add("key2", "value2") Return New JavaScriptSerializer().Serialize(d) End Function 

Et le JSON résultant:

 {"key1":"value1","key2":"value2"}