为什么Web服务中的方法在C#中返回Arraylist时会发生异常?

斯科皮奥

我在返回数组列表的Web服务中编写方法,当我得到该方法时,它将生成异常。我的方法如下

   //Webservice Method
    [WebMethod]
    public ArrayList ReceiveMessage(string strUser)
    {
        ArrayList arrList = new ArrayList();

        for (int i = 0; i < arrMessage.Count; i++)
        {
            object[] objArr = (object[])arrMessage[i];
            if (objArr[1].ToString() == strUser)
            {
                arrList.Add(new object[] {objArr[0],objArr[2], objArr[3], objArr[4] });


                arrMessage.RemoveAt(i);
                break;
            }
        }
        return arrList;
    }

    //Method from where i am calling webservice method  
    private void button2_Click(object sender, EventArgs e)
    {

        ArrayList obj = new ArrayList(objService1.ReceiveMessage("ABC"));
    }

下面是调用webservice方法时生成异常的详细信息。

System.Web.Services.Protocols.SoapException:服务器无法处理请求。---> System.InvalidOperationException:生成XML文档时出错。---> System.InvalidOperationException:在这种情况下不能使用System.Object []类型。在System.Xml.Serialization.XmlSerializationWriter.WriteTypedPrimitive(String name,String ns,Object o,Boolean xsiType)在Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write1_Object(String n,String ns,Object o,Boolean isNullable,Boolean needType )在Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write6_ReceiveMessageResponse(Object [] p)在System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,Object o,XmlSerializerNamespaces命名空间,字符串编码
在System.Web.Services.Protocols.SoapServerProtocol.WriteReturns(Object [] returnValues,流outputStream)在System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object [] returnValues)在System.Web.Services.Protocols.WebServiceHandler。 Invoke()-内部异常堆栈跟踪的结尾-

克里斯坦荣誉

序列化器不知道如何处理ArrayList中的基础Object数组。

您可以通过返回其他类型(例如通用列表)或用以下方法修饰您的方法来解决此问题:

[System.Xml.Serialization.XmlInclude(typeof(Object[]))]

这是一个很好的解释在这里

但是,出于这篇文章的好处,您基本上是在告诉代理生成器要生成的类的类型,否则它根本不知道要生成什么,并且会得到该异常。

基于此,您的网络方法代码可以重写为:

[WebMethod]
[System.Xml.Serialization.XmlInclude(typeof(Object[]))]
public ArrayList ReceiveMessage(string strUser)
{
    ArrayList arrList = new ArrayList();

    for (int i = 0; i < arrMessage.Count; i++)
    {
        object[] objArr = (object[])arrMessage[i];
        if (objArr[1].ToString() == strUser)
        {
            arrList.Add(new object[] { objArr[0], objArr[2], objArr[3], objArr[4] });

            arrMessage.RemoveAt(i);
            break;
        }
    }
    return arrList;
}

如果可以更新代码,最好不要再使用ArrayList,可以这样重写代码:

[WebMethod]
public List<object> ReceiveMessage(string strUser)
{
    List<object> list = new List<object>();

    for (int i = 0; i < arrMessage.Count; i++)
    {
        object[] objArr = (object[])arrMessage[i];
        if (objArr[1].ToString() == strUser)
        {
            list.Add(new object[] { objArr[0], objArr[2], objArr[3], objArr[4] });
            arrMessage.RemoveAt(i);
            break;
        }
    }
    return list;
}

希望这可以帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当函数在python中返回自己的名称时会发生什么?

来自分类Dev

VHDL中的整数超出范围时会发生什么?

来自分类Dev

当Final块中的代码引发异常时会发生什么?

来自分类Dev

在SVN中删除中继时会发生什么标记

来自分类Dev

在C ++标准中,当违反“应”要求时会发生什么?

来自分类Dev

在lldb中打印Swift对象(po)时会发生什么?

来自分类Dev

当非void方法在Objective-C中达到终点时会发生什么?

来自分类Dev

在RTOS中释放或发出信号时会发生什么?

来自分类Dev

当我们在C#中访问字符串的'Length'属性时会发生什么?

来自分类Dev

在Git中删除分支时会发生什么情况

来自分类Dev

在python中的str上使用encoding时会发生什么?

来自分类Dev

当您从《虚无》中抽奖时会发生什么?

来自分类Dev

当没有内存在C#中构造OutOfMemoryException时会发生什么?

来自分类Dev

当软件包在源中重复时会发生什么?

来自分类Dev

当您在python中设置字典时会发生什么?

来自分类Dev

在SwiftUI中,显示操作表时会发生什么?

来自分类Dev

为什么在文件中写入csv时会发生错误?

来自分类Dev

当flet在递归函数中时会发生什么?

来自分类Dev

当您从C ++函数返回引用时会发生什么?

来自分类Dev

当声明符(我/州)在for块中时会发生什么?

来自分类Dev

在AngularJS中删除ngRepeat使用的对象时会发生什么?

来自分类Dev

当非void方法在Objective-C中达到终点时会发生什么?

来自分类Dev

在C ++中返回Obj&,临时指针会发生什么?

来自分类Dev

为什么宽度属性在更改 html 中的填充属性时会发生变化

来自分类Dev

当用户从客户端向 C# 中的特定 Web 服务发送多个异步请求时会发生这种情况

来自分类Dev

在 C++ 中为对象赋值时会发生什么

来自分类Dev

在 C++ 中的 Map 中插入重复值时会发生什么

来自分类Dev

为什么在java中递归实现合并排序时会发生这个Stackoverflow异常?

来自分类Dev

在 C# 中,移除对象的 Action 会发生什么?

Related 相关文章

  1. 1

    当函数在python中返回自己的名称时会发生什么?

  2. 2

    VHDL中的整数超出范围时会发生什么?

  3. 3

    当Final块中的代码引发异常时会发生什么?

  4. 4

    在SVN中删除中继时会发生什么标记

  5. 5

    在C ++标准中,当违反“应”要求时会发生什么?

  6. 6

    在lldb中打印Swift对象(po)时会发生什么?

  7. 7

    当非void方法在Objective-C中达到终点时会发生什么?

  8. 8

    在RTOS中释放或发出信号时会发生什么?

  9. 9

    当我们在C#中访问字符串的'Length'属性时会发生什么?

  10. 10

    在Git中删除分支时会发生什么情况

  11. 11

    在python中的str上使用encoding时会发生什么?

  12. 12

    当您从《虚无》中抽奖时会发生什么?

  13. 13

    当没有内存在C#中构造OutOfMemoryException时会发生什么?

  14. 14

    当软件包在源中重复时会发生什么?

  15. 15

    当您在python中设置字典时会发生什么?

  16. 16

    在SwiftUI中,显示操作表时会发生什么?

  17. 17

    为什么在文件中写入csv时会发生错误?

  18. 18

    当flet在递归函数中时会发生什么?

  19. 19

    当您从C ++函数返回引用时会发生什么?

  20. 20

    当声明符(我/州)在for块中时会发生什么?

  21. 21

    在AngularJS中删除ngRepeat使用的对象时会发生什么?

  22. 22

    当非void方法在Objective-C中达到终点时会发生什么?

  23. 23

    在C ++中返回Obj&,临时指针会发生什么?

  24. 24

    为什么宽度属性在更改 html 中的填充属性时会发生变化

  25. 25

    当用户从客户端向 C# 中的特定 Web 服务发送多个异步请求时会发生这种情况

  26. 26

    在 C++ 中为对象赋值时会发生什么

  27. 27

    在 C++ 中的 Map 中插入重复值时会发生什么

  28. 28

    为什么在java中递归实现合并排序时会发生这个Stackoverflow异常?

  29. 29

    在 C# 中,移除对象的 Action 会发生什么?

热门标签

归档