将DataSet传递给WCF服务

时间:2016-03-16 17:23:45

标签: wcf c#-3.0

我是.NET新手。我试图将DataSet以下方式传递给WCFService。

public static System.Data.DataSet ds = new System.Data.DataSet();
wscfservice.wcftestfunction(string1, string2, ref ds);

在WSDL文件中,定义了类型

ActualType xmlns="http://schemas.microsoft.com/2003/10/Serialization/" Name="DataSet" Namespace="http://schemas.datacontract.org/2004/07/System.Data"

如果我不使用ref,我收到编译错误。运行程序后,我得到一个空值。

以下是错误和ds说明

Channel Obtaining the runtime type of a transparent proxy is not supported in this context. 
  • ds {System.Data.DataSet} System.Data.DataSet     CaseSensitive假布尔     Container null System.ComponentModel.IContainer     DataSetName“NewDataSet”字符串
  • DefaultViewManager {System.Data.DataViewManager} System.Data.DataViewManager     DesignMode false bool     EnforceConstraints true bool
  • Events {System.ComponentModel.EventHandlerList} System.ComponentModel.EventHandlerList
  • ExtendedProperties Count = 0 System.Data.PropertyCollection     HasErrors假布尔     IsInitialized true bool
  • Locale {en-US} System.Globalization.CultureInfo     命名空间“”字符串     前缀“”字符串
  • Relations {System.Data.DataRelationCollection.DataSetRelationCollection} System.Data.DataRelationCollection {System.Data.DataRelationCollection.DataSetRelationCollection}     RemotingFormat Xml System.Data.SerializationFormat     SchemaSerializationMode IncludeSchema System.Data.SchemaSerializationMode     Site null System.ComponentModel.ISite
  • Tables {System.Data.DataTableCollection} System.Data.DataTableCollection     数0 int     IsReadOnly假布尔     IsSynchronized false bool
  • 列表计数= 0 System.Collections.ArrayList
  • SyncRoot {System.Data.DataTableCollection} object {System.Data.DataTableCollection}
  • 静态成员
  • 非公开会员
  • 结果视图展开结果视图将枚举IEnumerable

1 个答案:

答案 0 :(得分:1)

如果您选择(或必须)使用DataSet,则需要设置Name属性以确保序列化。

public static System.Data.DataSet ds = new System.Data.DataSet("MyDataSet");

来自MSDN

  

需要DataSet的名称来确保XML   DataSet的表示始终具有文档的名称   element,是模式定义中的最高级元素。