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

序列化类型为“System.Globalization.CultureInfo”的对象时检测到循环引用。
context.Response.ContentType = "text/plain";
  DataSet ds= Sys_fss.SelectSys_factory();
  JavaScriptSerializer js = new JavaScriptSerializer();
  context.Response.Write(js.Serialize(ds));这点报错序列化类型为“System.Globalization.CultureInfo”的对象时检测到循环引用。
 哪位高手 解决一下

------解决方案--------------------
对象时检测到循环引用。。。。

对象之间有互相引用到,比如A,B类, A中有个成员是B的实例,B中有个成员是A的实例。

自己去看自己的被序列化的类相关的类型,有没有这中情况。 


------解决方案--------------------
这个问题是DataSet自动转换到Json格式的时候错误

在web.config中配置如下代码:

<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>

 记的上面要导入Microsoft.Web.Preview.dll 这个Dll 才能正常使用、不然会报错误、大致如下:

<title>找不到类型“Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview”。</title>.......................


 解决方法: 去http://go.microsoft.com/fwlink/?LinkID=77294下载"Microsoft ASP.NET AJAX Futures CTP"
安装好后,在默认安装文件夹(C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Futures January CTP\v1.0.61025)中可以找到. 然后copy Microsoft.Web.Preview.dll 到项目的Bin目录下就ok了