ISSUE:StackFrame.GetMethod()
返回带有未知字符的属性名称(myProperty 返回为 __XY_myProperty)。
最近我们向现有类添加了一个属性。此类用于 ASP.NET。此类中的每个属性都调用一个自定义安全检查函数,该函数使用堆栈跟踪来获取被调用者的方法名称,以根据该名称执行操作。
问题是,在运行时StackFrame
返回这个新添加的属性名称(myProperty),前面带有未知字符(__XY_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()
调用security.checkSecurity()
返回 myProperty 方法名称为:__XY_myProperty
(StackFrame.GetMethod()
上述示例中未显示调用。)
我们尝试的是:
- 清除 ASP.NET 缓存
- 比较 .NET 补丁
- 重新启动了服务器
这些都没有解决问题。
服务器信息:
- 视窗 2003
- 在 VMWare 上运行(JIT 在 VMWare 上的优化是否不同?)
- IIS 6
- 净 3.5
- 发布模式下构建的 ASP.NET 项目
- 在调试模式下编译的 DLL 以使堆栈跟踪正常运行