怎么解决web service circular reference 问题

下面是一个非常简单的例子:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace WebService1
{
    [Serializable]
    public class Person
    {
        private Person friend;
        private String name;
        public String Name
        {
            get { return name; }
            set { name = value; }
        }
        public Person Friend
        {
            get { return friend; }
            set { friend = value; }
        }
    }
}
using System;
using System.Data;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.ComponentModel;
namespace WebService1
{
    /// <summary>
    /// Summary description for Service1
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ToolboxItem(false)]
    public class Service1 : System.Web.Services.WebService
    {
        [WebMethod]
        public Person HelloWorld()
        {
            Person him = new Person();
            Person her = new Person();
            him.Friend = her;
            her.Friend = him;
            return him;
        }
    }
}

运行 ASMX web service 将会得到下面的错误:

System.InvalidOperationException: There was an error generating the XML
document. --->
System.InvalidOperationException: A circular reference was detected while
serializing an object of type Person.

IBM 网站有一篇文章描述了这个问题: http://www-106.ibm.com/developerwor...s-tip-j2eenet1/

各位兄弟,谁解决过这个问题

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏青玉伏案

JavaEE开发之Spring中的条件注解、组合注解与元注解

上篇博客我们详细的聊了《JavaEE开发之Spring中的多线程编程以及任务定时器详解》,本篇博客我们就来聊聊条件注解@Conditional以及组合条件。条件...

23310
来自专栏difcareer的技术笔记

JNI实现源码分析【四 函数调用】正文0x01:dvmCallMethodV0x02:nativeFunc0x03: 何时赋值

有了前面的铺垫,终于可以说说虚拟机是如何调用JNI方法的了。JNI方法,对应Java中的native方法,所以我们跟踪对Native方法的处理即可。

1014
来自专栏Java技术栈

Java 面试题经典 77 问(含答案)!

1863
来自专栏java 成神之路

URI 源码分析

38915
来自专栏黑泽君的专栏

java中的类型安全问题-Type safety: Unchecked cast from Object to ... 或者 Type safety: Unchecked cast from Type

首先,java语言室类型安全的,通常我们遇到这个问题是出现在 Object转化为目标类型 或者 Type转化为目标类型 时,

1872
来自专栏黑泽君的专栏

day19_java基础加强_动态代理+注解+类加载器

        Proxy Pattern(即:代理模式),23种常用的面向对象软件的设计模式之一。         代理模式的定义:为其他对象提供一种代理以控...

1264
来自专栏风中追风

写一个自己的springMVC

今天我们来实现一个简单的springMVC框架,可以理解为 springMVC1.0这个版本,只是功能比较简单而已;

36114
来自专栏Netkiller

java 脚本引擎

本文节选自《Netkiller Java 手札》 第 18 章 java 脚本引擎 目录 18.1. Maven 18.2. Helloworld 18.3. ...

4125
来自专栏IT技术精选文摘

跟着实例学习ZooKeeper的用法: 缓存

可以利用ZooKeeper在集群的各个节点之间缓存数据。 每个节点都可以得到最新的缓存的数据。 Curator提供了三种类型的缓存方式:Path Cache,N...

3167
来自专栏阿杜的世界

Spring Boot:定制PropertyEditors

在Spring Boot: 定制HTTP消息转换器一文中我们学习了如何配置消息转换器用于HTTP请求和响应数据,实际上,在一次请求的完成过程中还发生了其他的转换...

814

扫码关注云+社区

领取腾讯云代金券