问题描述
我写了一个WCF 服务器, 数据协约定义为[DataContract]publicclassTable{[DataMember]publicstringInstituteEmployeeID{get;set;}}客户端引用该服务时生成代码为publicpartialclassTable{privateboolfirstDealField;privateboolfirstDealFieldSpecified;..}怎么生成了一个命名名加了一个后缀Specified? 这个怎么解决?
解决方案
解决方案二:
需要在WCF服务端的数据契约(即Model类)的属性或字段中,追加[DataMember(IsRequired=true)]特性,并且Model类本身也要添加[DataContract]特性。
解决方案三:
你的情况应该是使用了.Net2.0框架来添加Web引用(对WCF服务的引用),因此WCF只能使用BasicHttpBinding,即使用简单的HTTP协议进行服务调用。若是.Net3.0框架就不会有这个问题。1:添加Web引用是由wsdl.exe生成客户端代理的。添加服务引用是由svcutil.exe生成客户端代理的。2.:添加Web引用生成的代理可以被.Net1.1或.net2.0的客户端调用。添加服务引用生成的代理只能被.Net3.0+的客户端调用,而且添加服务引用后不仅生成代理类,在web.config中还会生成相应的配置信息。(WCF需要.Net3.0的支持)。1)使用wsdl生成代理类:打开visualstudio2008/2010命令提示工具,定位到放置代理类文件的路径,在本例中使用的是D盘(即使用命令跳转到D盘根目录),然后执行wsdlhttp://localhost:8000/GettingStarted?wsdl命令来生成代理类。如下图2)使用svcutil生成WCF客户端代理类与配置文件(需要.NET3.0+支持):打开visualstudio2008/2010命令提示工具,定位到放置代理类文件的路径,在本例中使用的是D盘(即使用命令跳转到D盘根目录),然后执行svcutilhttp://localhost:8000/GettingStarted命令来生成代理类。如下图: