繁体   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