簡體   English   中英

ASP.NET Web Service使用參數返回IndexOutOfRangeException

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM