WebService服务里返回了一个DataSet,数据没问题,但运行时出现“System.InvalidOperationException,序列化类型为“System.Reflection.Module”的对象时检测到循环引用。”问题。东查西查的,原来在WebService中使用DataTable做返回值时,需要在Web.Config文件中添加序列化转换器。DataSet、DataTable、DataRow均有转换器,方法如下:
< system.web.extensions>
< scripting>
< webServices>
< jsonSerialization>
< converters>
< add name="DataSetConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview"/>
< add name="DataRowConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataRowConverter, Microsoft.Web.Preview"/>
< add name="DataTableConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter, Microsoft.Web.Preview"/>
< /converters>
< /jsonSerialization>
< /webServices>
< /scripting>
< /system.web.extensions>
< system.web.extensions>
< scripting>
< webServices>
< jsonSerialization>
< converters>
< add name="DataSetConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview"/>
< add name="DataRowConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataRowConverter, Microsoft.Web.Preview"/>
< add name="DataTableConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter, Microsoft.Web.Preview"/>
< /converters>
< /jsonSerialization>
< /webServices>
< /scripting>
< /system.web.extensions>
二、类声明加入标签[System.Web.Script.Services.ScriptService]
三、若要引用Session中的数据,加入[WebMethod(EnableSession = true)]
四、添加对Microsoft.Web.Preview.dll的引用