0

データソースにバインドされているMSReportViewerレポートがあります。これは、すべきでないプロパティを要求しています。レポートのすべてのフィールドを確認しましたが、使用されている場所が見つかりません。

プロパティにブレークポイントを設定すると、そのプロパティが確実に呼び出されていることがわかりますが、ReportViewerがどこから呼び出しているのかわかりません。

****このプロパティがどこから呼び出されているかを確認する方法はありますか?**

これが私がこれまでにチェックしたものです:

ここに画像の説明を入力してください

スタックトレース:マネージコードを表示し、逆アセンブルを確認しましたが、明らかなものは何も表示されませんでした。

ここに画像の説明を入力してください

呼び出し階層には、プロパティが呼び出されたすべての場所が表示されます。レポートにはいずれも含まれていません。

アップデート:

例外をスローするというn8wrlの提案を試しましたが、スタックはまだアンマネージコード上にあります。

ここに画像の説明を入力してください

アップデート2

オブジェクトがどこかでシリアル化されている場合に備えて、XmlとScriptの無視タグを追加しようとしましたが、それは機能しませんでした(シリアル化を無視する正しいタグでない限り)。

4

1 に答える 1

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);
于 2012-07-19T10:29:09.730 に答える