日期:2014-05-18  浏览次数:20717 次

wcf的webservice,proxy多出来的2个参数是怎么回事?
一个是out int的SqlResult,一个是out bool的SqlResultSpecified,如何去掉,跟原型参数一样呢?

谢谢

------解决方案--------------------
你这个现象应该是用.net 2.0(VS2005)将WCF Service当做Web Service来使用时出现的。

在你的WCF interface前加上如下属性(把原来的ServiceContract属性改为):
[ServiceContract,
XmlSerializerFormat(Style = OperationFormatStyle.Rpc)]
就没有那两个额外参数了

通讯双方既然是以XML来传送参数的,XML语法上允许有些标记出现空值,.net 2.0也允许int等类型有空值,所以会出现你说的额外参数,这些额外参数指示是否出现空值。XmlSerializerFormat(Style = OperationFormatStyle.Rpc)是指示通讯双方,如何在XML中序列化方法调用的参数。Rpc风格使得不会给方法传送空的int值。这个属性不影响其它的数据序列化,因此没有副作用,可以安全使用。