1

我有以下代码将消息列表转换为json

Public Class MessageService
    <OperationContract()> _
    Public Function GetMessage(Id As Integer) As String



        Dim msg As New Message()
        Dim stream As New MemoryStream()
        Dim serializer As New DataContractJsonSerializer(GetType(NewMessage))

        Dim dtMessages = msg.getUnreadMessages("3A3458")

        Dim list As New ArrayList

        Dim m As New NewMessage()
        m.Id = 1
        m.Text = "mmsg"
        list.Add(m)
        list.Add(m)
        serializer.WriteObject(stream, list)

        stream.Position = 0
        Dim streamReader As New StreamReader(stream)
        Return streamReader.ReadToEnd()
    End Function
End Class

但我收到以下错误:

    The server was unable to process the request due to an internal error. 
 For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, 
or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect the server trace logs.
4

1 回答 1

2

这里:

Dim serializer As New DataContractJsonSerializer(GetType(NewMessage))

您向序列化程序指示您要序列化一个NewMessage实例。

和这里:

serializer.WriteObject(stream, list)

你正在传递一个Arraylist. 这显然是模棱两可的。我建议您修改您的方法,使其直接返回强类型集合并将 JSON 序列化留给绑定,而不是在数据合同中编写管道代码:

Public Class MessageService
    <OperationContract()> _
    Public Function GetMessage(Id As Integer) As List(Of NewMessage)
        Dim list As New List(Of NewMessage)
        Dim m As New NewMessage()
        m.Id = 1
        m.Text = "mmsg"
        list.Add(m)

        Return list
    End Function
End Class
于 2012-06-03T07:38:16.117 回答