如何找出从非托管代码调用属性的位置

时间:2012-07-18 15:59:38

标签: asp.net reportviewer unmanaged callstack

我有一个绑定到数据源的MS ReportViewer报告,它正在请求它不应该的属性。我已经检查了报告中的所有字段,但我无法找到它所使用的任何字段。

在属性上设置一个断点显示它肯定被调用,但是我无法从ReportViewer的调用位置找到它。

****有没有办法找出这个属性的来源?**

这是我到目前为止所检查的内容:

enter image description here

堆栈跟踪:显示托管代码,检查反汇编但看不到任何明显的内容。

enter image description here

调用层次结构显示调用属性的所有位置 - 报告中没有任何位置。

更新

尝试了n8wrl关于抛出异常的建议,但堆栈仍然是非托管代码。

enter image description here

更新2

我还尝试添加Xml和Script ignore标签,以防对象在某处被序列化但不起作用(除非它们不是忽略序列化的正确标签?)

1 个答案:

答案 0 :(得分:1)

好的,我想出了一个解决方案。我认为这与序列化有关,所以我将数据源传递给System.Web.Script.Serialization.JavaScriptSerializer。

序列化对象时,我发现导致代码爆炸的所有属性。我将[ScriptIgnore]标签添加到这些属性中,以阻止它们在未使用时开始序列化。

System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();

serializer.RecursionLimit = int.MaxValue;

object o = serializer.Serialize(base.CurrentOrder);