为什么我的wcf Web服务引用中有额外的参数?

Myk*_*oft 4 c# wcf web-services

我正在尝试将ASP.Net Web服务转换为WCF应用程序.客户端在.Net Compact Framework上,它不支持WCF,所以我需要确保WCF继续支持ASP样式的web服务.当我在Visual Studio中添加Web服务引用时,生成的代理类'方法有额外的参数.

例如,如果方法定义为:

public void GetEmpInfo(int empNo)
Run Code Online (Sandbox Code Playgroud)

该方法将在代理类中显示为:

public void GetEmpInfo(int empNo, bool empNoSpecified)
Run Code Online (Sandbox Code Playgroud)

是什么导致这种情况,我如何让它停下来?

JP *_*oto 8

看看这篇博文 ......

这些额外的布尔"指定"成员来自哪里,他们做了什么?答案是WCF数据协定序列化程序默认生成的模式.由于其版本控制模型的工作方式,序列化程序会将所有数据成员生成为可选元素.较旧的Web服务堆栈,ASP.NET Web服务("ASMX"),使用不同的序列化程序XmlSerializer,它维护完整的架构和XML保真度.XmlSerializer将所有可选元素映射到两个成员:一个表示数据本身,另一个指定数据是否实际存在 - 这是"xxxSpecified"成员.必须将这些xxxSpecified成员设置为true才能启用相应"实际数据"成员的序列化.