[英]ASP.NET Web Service returns IndexOutOfRangeException with 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;
}
}
第一種方法接受傳統的html表單帖子,響應將JSON字符串寫入頁面。 第二種方法接受通過AJAX發布的JSON值並返回一個序列化對象。
這兩種方法都可以自行運行,但是當它們放在同一個Web服務中時,我在調用method1時會遇到這個錯誤:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
當我從method2中刪除參數時,它們可以工作。
任何人都可以建議為什么會這樣嗎?
編輯:
問題跨越了method2的參數類型。 如果我將其更改為字符串或簡單數據類型,它可以正常工作。 正如喬爾所暗示的那樣,可能是因為字典無法序列化。 這似乎不會影響我的ajax發送的請求,只會將直接表單帖子分解為此處理程序。 因此,我的解決方法是將表單后處理程序單獨放在一個單獨的文件中。 不理想,但適用於我的應用程序。
字典不可序列化。 將它隱藏在對象后面對你沒有任何作用。 您必須先將字典轉換為數組或其他可序列化對象,然后再將其發送出去。
為什么.NET中沒有XML可序列化的字典? http://weblogs.asp.net/pwelter34/archive/2006/05/03/444961.aspx http://www.tanguay.info/web/index.php?pg=codeExamples&id=333
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.