当时的情况是要与某企业(客户端是java程序)做一个接口,存在的问题是在客户端类无法序列化,方法调用也存在一些问题,但是经过测试在.net开发环境中应用该webservice没问题,可以正常调用.
解决的办法,在要暴露给客户端要序列化的类,要被远程调用的方法前加上一些Atrubuters
第一种是 .asmx文件的后台文件如 users.asmx.cs ,这里需要序列化类与方法,代码如下
[WebService(Namespace
=
"
http://kingonsoft.com/telehouse
"
)]
[SoapRpcService(RoutingStyle
=
SoapServiceRoutingStyle.SoapAction)]
[System.Xml.Serialization.XmlTypeAttribute(Namespace
=
"
http://kingonsoft.com/telehouse
"
)]
[Serializable()]
public
class
TeleUser : System.Web.Services.WebService

...
{

[WebMethod]
[SoapRpcMethod(Action="http://61.23.210.8/UserInterface",
RequestNamespace="http://61.23.210.8/UserInterface/Rpc",
RequestElementName="UserInterfaceRequest",
ResponseNamespace="http://61.23.210.8/UserInterface/Rpc",
ResponseElementName="UserInterfaceResponse")]
[return: System.Xml.Serialization.SoapElementAttribute("return")]
public state AddUser(UserInfo objUser)

...{
//.....
}
}
第二种情况是 需要被序列化的普通实体类
i: 如果类的内部属性只是简单数据类型,序列化方法如下
[Serializable()]
public
class
point

...
{
string pType;
int quantity;
string factorycode;
public string PType

...{

get...{return pType;}

set...{pType=value;}
}
public int Quantity

...{

get...{return quantity;}

set...{quantity=value;}
}
public string FactoryCode

...{

get...{return factorycode;}

set...{factorycode=value;}
}

}
ii:如果类的内部属性不只是简单的数据类型,比如包含有自定义的数据类型,如含有数组 Piont[] psInfo ,且定义了一个类索引器来访问类的私有字段 psInfo .
这样的情况序列化的办法是:
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute(
"
code
"
)]
[System.Xml.Serialization.XmlTypeAttribute(Namespace
=
"
http://61.23.210.8/UserInterface/
"
)]
[Serializable()]
public
class
UserInfo

...
{
public UserInfo()

...{
//
// TODO: 在此处添加构造函数逻辑
//
}
private point[] psInfo=new point[0];
private string areaCode="";

/**//// <summary>
/// 配件信息
/// </summary>
public point this[int index]

...{
get

...{
// if ( index < 0 || index > psInfo.Length -1 )
// {
// return null;
// }
return (point)psInfo[index];
}
set

...{
if ( index <0 || index >psInfo.Length-1 )

...{
return ;
}
psInfo[index]=value;
}
}
public point[] Point

...{
get

...{
return psInfo;
}
set

...{
psInfo=value;
}
}

/**//// <summary>
/// 城市代码
/// </summary>
public string AreaCode

...{

get...{return areaCode;}

set...{areaCode=value;}
}
}
第三种情况 普通的业务逻辑类的序列化
[System.SerializableAttribute()]
public
class
Users

...
{

/**//// <summary>
/// 删除用户信息
/// </summary>
/// <param name="obj">用户对象</param>
/// <returns>状态信息</returns>
public state Delete(userInfo obj)

...{
//..............
}
}
希望对各位有所帮助.