問題:StackFrame.GetMethod()
不明な文字が前に付いたプロパティ名を返します(myPropertyは__XY_myPropertyとして返されます)。
最近、既存のクラスにプロパティを追加しました。このクラスはASP.NETで使用されます。このクラスのすべてのプロパティは、スタックトレースを使用して呼び出し先のメソッド名を取得し、その名前に基づいてアクションを実行するカスタムセキュリティチェック関数を呼び出します。
問題は、実行時に不明な文字(__XY_myPropertyStackFrame
)が付加されたこの新しく追加されたプロパティ名(myProperty )を返すことです。これは、実動マシンでのみ発生します。同様の設定を持つ他のマシンでは再現できませんでした。
コードのサンプルは次のとおりです。
// comments
public returntype myProperty
{
get
{
security.checkSecurity();
return returntype();
}
set
{
security.checkSecurity();
if (value == null)
{
Row["abc"] = anothervale;
}
else
{
Row["xyz"] = value;
}
}
}
// comment
StackFrame.GetMethod()
call inは、 security.checkSecurity()
myPropertyメソッド名を次のように返します。__XY_myProperty
(StackFrame.GetMethod()
上記の例には示されていません。)
私たちが試したのは:
- クリアされたASP.NETキャッシュ
- 比較された.NETパッチ
- サーバーを再起動しました
これらのどれも問題を解決しませんでした。
サーバー情報:
- Windows 2003
- VMWareで実行されます(JITはVMWareで異なる方法で最適化されますか?)
- IIS 6
- NET 3.5
- リリースモードで構築されたASP.NETプロジェクト
- スタックトレースを正しく動作させるためにデバッグモードでコンパイルされたDLL