je le service Web suivant:ASP.NET Web Service Réclamation IndexOutOfRangeException avec des arguments
[ScriptService]
public class Handler : WebService {
[WebMethod]
public void method1() {
string json = "{ \"success\": true }";
System.Web.HttpContext.Current.Response.Write(json);
}
[WebMethod]
public object method2(Dictionary<string, object> d) {
Dictionary<string, object> response = new Dictionary<string, object>();
response.Add("success", true);
return response;
}
}
La première méthode accepte un formulaire HTML traditionnel message et la réponse écrit une chaîne JSON à la page. La deuxième méthode accepte une valeur JSON publiée via AJAX et renvoie un objet sérialisé.
Ces deux méthodes fonctionnent bien sur leur propre, mais mis ensemble dans le même service web je reçois cette erreur lorsque vous appelez method1:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
Lorsque je supprime les arguments de method2 ils travaillent.
Quelqu'un peut-il suggérer pourquoi cela se produit?
Edit:
Le problème va du type d'argument de method2. Si je le change en chaîne ou en type de données simple, cela fonctionne correctement. Comme le suggère Joel, c'est probablement parce que les dictionnaires ne peuvent pas être sérialisés. Cela ne semble pas affecter mes demandes envoyées par ajax et ne casse que les messages de forme directe à ce gestionnaire. Par conséquent, ma solution de contournement consiste à mettre les gestionnaires de publication de formulaire dans un fichier distinct par eux-mêmes. Pas idéal mais fonctionne pour mon application.
http://stackoverflow.com/questions/67959/c-xml-serialization-gotchas –