HttpChannel+Soap难道对返回名为“Entity”类的数组敏感!

     最近忙得一蹋糊涂,作UAP开发平台,总是觉得这样的日子好像没有尽头似的!
     在开发的时候,发现了.net remoting的一个Bug(暂且这样称呼,也许是我自己的错误),采用Remoting分布式开发,其中的服务组件有一个方法:
     public Entity[] GetEntityInfo( 参数..... );
其中的Entity是自己定义的一个实体类,当使用HttpChannel+Soap通信格式的时候,总是在方法执行完毕返回的过程中,通道Soap序列化的时候抛出一个错误,但是另外一个方法: public Entity GetEntityInfoByID( string id )确没有任何问题,开始的时候我怀疑是Entity类的问题,于是我构建了另外一个类,仅仅名字与Entity不一样,其实现代码全部拷贝Entity 类,用同样的方法确没有任何问题,于是我怀疑是不是所有的名为Entity的类在该情况下都不受支持,为了验证我的想法,我新建了一个Demo工程,模拟整个实现过程,其中一些代码如下所示:
public class  MyService : MarshalbyRefobject
{
public Entity[] GetEntities( )
{
     return new Entity[]{ new Entity() , new Entity()};
}

public Entity GetEntityByID( string id )
 {
         return new Entity();
 }
}

[Serializable]
public class Entity
{
             private string _name;
             public string Name
             {
                     get
                     {
                              return _name;
                     }
                     set
                     {
                               _name = value;
                     }
             }
public Entity( )
{
}
}

果然执行GetEntities这个方法的时候,抛出了同样的错误,但是GetEntityByID确没有任何问题。
     看来HttpChannel+Soap对凡是名为“Entity”的类执行序列化的时候“敏感”,它出现在下面的条件下:
     1、可序列化的类名为“Entity”
     2、服务类的方法返回Entity数组
     3、HttpChannel + Soap

你可能感兴趣的:(HttpChannel+Soap难道对返回名为“Entity”类的数组敏感!)