创建包含方法的Web服务时出错返回ArrayList类型

时间:2012-11-27 18:20:47

标签: asp.net web-services arraylist

我创建网络服务似乎

Public Class NameAndvalue
    Public name As String
    Public value As String
End Class
<WebMethod()> _
Public Function ReturnNames_1() As ArrayList
    Dim names As New List(Of NameAndvalue)
    Dim nv As NameAndvalue
    nv = New NameAndvalue With {.name = "AAA", .value = "1"} : names.Add(nv)
    nv = New NameAndvalue With {.name = "BBB", .value = "2"} : names.Add(nv)
    nv = New NameAndvalue With {.name = "CCC", .value = "3"} : names.Add(nv)
    Dim Arr As ArrayList = New ArrayList(names)
    Return Arr
End Function

当我在浏览器中调用时(给我一个错误......)

  

System.InvalidOperationException:生成错误时出错   XML文档。 ---&GT; System.InvalidOperationException:类型   不期望TMR.AndroidMethods + NameAndvalue。使用XmlInclude   或SoapInclude属性指定未知的类型   静态。在   System.Xml.Serialization.XmlSerializationWriter.WriteTypedPrimitive(字符串   name,String ns,Object o,Boolean xsiType)at   Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write1_Object(字符串   n,String ns,Object o,Boolean isNullable,Boolean needType)at   Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write2_ArrayOfAnyType(对象   o)at   Microsoft.Xml.Serialization.GeneratedAssembly.ArrayListSerializer.Serialize(对象   objectToSerialize,XmlSerializationWriter writer)at   System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,   Object o,XmlSerializerNamespaces名称空间,String encodingStyle,   String id)---内部异常堆栈跟踪结束--- at   System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,   Object o,XmlSerializerNamespaces名称空间,String encodingStyle,   字符串id)at   System.Xml.Serialization.XmlSerializer.Serialize(的TextWriter   textWriter,Object o,XmlSerializerNamespaces namespaces)at   System.Web.Services.Protocols.XmlReturnWriter.Write(HttpResponse对象   响应,Stream outputStream,Object returnValue)at   System.Web.Services.Protocols.HttpServerProtocol.WriteReturns(对象[]   returnValues,Stream outputStream)at   System.Web.Services.Protocols.WebServiceHandler.WriteReturns(对象[]   returnValues)at   System.Web.Services.Protocols.WebServiceHandler.Invoke()

知道这个错误我看到它当我从Method返回list(of string)时 因为我将List(Of String)的回报更改为ArrayList但发生了同样的问题。

问题是什么?

1 个答案:

答案 0 :(得分:1)

请尝试使用List(Of NameAndvalue)。以下示例

<WebMethod()> _
Public Function HelloWorld() As List(Of NameAndvalue)
    Dim names As New List(Of NameAndvalue)
    Dim nv As NameAndvalue
    nv = New NameAndvalue With {.name = "AAA", .value = "1"} : names.Add(nv)
    nv = New NameAndvalue With {.name = "BBB", .value = "2"} : names.Add(nv)
    nv = New NameAndvalue With {.name = "CCC", .value = "3"} : names.Add(nv)

    Return names
End Function

返回

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfNameAndvalue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
  <NameAndvalue>
    <name>AAA</name>
    <value>1</value>
  </NameAndvalue>
  <NameAndvalue>
    <name>BBB</name>
    <value>2</value>
  </NameAndvalue>
  <NameAndvalue>
    <name>CCC</name>
    <value>3</value>
  </NameAndvalue>
</ArrayOfNameAndvalue>