Ich habe folgenden Web-Service:ASP.NET Web Service liefert IndexOutOfRangeException mit Argumenten
[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;
}
}
Die erste Methode akzeptiert ein traditionelles HTML-Formular senden und Antwort schreibt auf der Seite einen JSON-String. Die zweite Methode akzeptiert einen JSON-Wert, der über AJAX gesendet wird, und gibt ein serialisiertes Objekt zurück.
Beide Methoden funktionieren auf ihre eigenen, aber wenn sie in der gleichen Web-Service zusammen bekomme ich diesen Fehler, wenn method1 Aufruf:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
Wenn ich die Argumente aus method2 sie arbeiten zu entfernen.
Kann jemand vorschlagen, warum dies geschieht?
Edit:
Das Problem erstreckt sich von dem Argument Art von method2. Wenn ich es in einen String oder einen einfachen Datentyp ändere, funktioniert es gut. Wie Joel vermutet, liegt es wahrscheinlich daran, dass Wörterbücher nicht serialisiert werden können. Dies scheint meine von ajax gesendeten Anfragen nicht zu beeinflussen und bricht nur direkte Formular-Posts mit diesem Handler ab. Daher besteht meine Problemumgehung darin, die Formularnachbehandlungsroutinen in einer separaten Datei zu speichern. Nicht ideal, aber funktioniert für meine Anwendung.
http://stackoverflow.com/questions/67959/c-xml-serialization-gotchas –