底层连接已关闭--Web API,WCF

时间:2014-05-16 21:37:08

标签: c# wcf rest asp.net-web-api

我有一个REST服务调用WCF服务。 WCf服务中的方法按预期返回数据。这是c#对象的Json格式。

 [
            {
                "$id": "1",
                "children": [],
                "id": 1,
                "name": "1",
                "owner": {
                    "userId": 1,
                    "username": "testuser",
                    "firstName": null,
                    "lastName": null
                },
                "parent": null,
                "permissions": [],
                "type": 0
            }
        ]

当有一个复杂的对象时,WCf服务抛出错误"底层连接已关闭:连接意外关闭"

 [
    {
        "$id": "1",
        "Children": [
            {
                "$id": "2",
                "Children": [],
                "Id": 603268262,
                "Name": "testfolder",
                "Owner": {
                    "UserId": 555,
                    "Username": "testuser",
                    "FirstName": null,
                    "LastName": null
                },
                "Parent": {
                    "$ref": "1"
                },
                "Permissions": null,
                "Type": 0
            }
        ],
        "Id": 1,
        "Name": "555",
        "Owner": {
            "UserId": 555,
            "Username": "testuser",
            "FirstName": null,
            "LastName": null
        },
        "Parent": null,
        "Permissions": null,
        "Type": 0
    }
]

我在这个SO问题上尝试了大多数答案。为什么只在返回复杂对象时才会收到错误?

2 个答案:

答案 0 :(得分:0)

您需要检查数据合同,请看一下:http://msdn.microsoft.com/en-us/library/aa347850.aspx

答案 1 :(得分:0)

在发布问题后找到答案。我注意到有一个对象在Json中有一个对象的引用

"Parent": {
                    "$ref": "1"
                }

这会阻止对象序列化。我做了一个深层复制并解决了问题