でIndexOutOfRangeExceptionを返しI次のWebサービスを持っている:ASP.NET Webサービスは、引数
[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;
}
}
第1の方法は、従来のHTMLフォームのポストを受け入れ、応答がページにJSON文字列を書き込みます。 2番目のメソッドは、AJAX経由でポストされたJSON値を受け取り、シリアル化されたオブジェクトを返します。
は、これらの両方の方法は、自分自身で問題なく動作しますが、同じWebサービスに一緒に入れたときに法1を呼び出すときに、私はこのエラーを取得:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
私は、彼らが働く方法2から引数を削除します。
これはなぜ起こっているのでしょうか?
編集:
問題は、方法2の引数の型からまたがります。文字列や単純なデータ型に変更するとうまく動作します。ジョエルが示唆するように、おそらくディクショナリはシリアル化できないからです。これは、ajaxによって送信されたリクエストには影響しないように見え、フォーム・ポストをこのハンドラに分割するだけです。したがって、私の回避策は、フォームポストハンドラを別のファイルに置くことです。理想的ではありませんが、私のアプリケーションのために働く
http://stackoverflow.com/questions/67959/c-xml-serialization-gotchas返信用 –