Asp.net 如何找出从非托管代码调用属性的位置
我有一个绑定到数据源的MS ReportViewer报表,该报表正在请求一个它不应该请求的属性。我已经检查了报告上的所有字段,但我找不到它使用的任何地方 在属性上放置一个断点表明它确实被调用,但我无法找到ReportViewer从何处进行调用 ****有没有办法找出从何处调用此属性** 以下是我到目前为止检查的内容: 堆栈跟踪:显示托管代码,检查了反汇编,但看不到任何明显的内容 调用层次结构显示从中调用属性的所有位置,其中任何位置都不在报告中 更新: 尝试了n8wrl关于引发异常的建议,但堆栈仍然位于非托管代码上 更新2Asp.net 如何找出从非托管代码调用属性的位置,asp.net,reportviewer,unmanaged,callstack,Asp.net,Reportviewer,Unmanaged,Callstack,我有一个绑定到数据源的MS ReportViewer报表,该报表正在请求一个它不应该请求的属性。我已经检查了报告上的所有字段,但我找不到它使用的任何地方 在属性上放置一个断点表明它确实被调用,但我无法找到ReportViewer从何处进行调用 ****有没有办法找出从何处调用此属性** 以下是我到目前为止检查的内容: 堆栈跟踪:显示托管代码,检查了反汇编,但看不到任何明显的内容 调用层次结构显示从中调用属性的所有位置,其中任何位置都不在报告中 更新: 尝试了n8wrl关于引发异常的建议,但堆
我还尝试添加Xml和脚本忽略标记,以防对象在某个地方被序列化,但这不起作用(除非它们不是忽略序列化的正确标记?好的,我想出了一个解决方案。我假设这与序列化有关,所以我将数据源传递给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);
用锤子敲打它-你能让你的属性抛出一个异常,运行报告,并在失败时查看堆栈跟踪吗?@n8wrl-谢谢,我尝试了你的建议(请参阅更新),但我仍然有同样的问题,因为不知道由于非托管代码,它从何处重新获得。