最近发现一个奇怪现像: 如果在Visual Studio里生成网站,则VS直接退出。 如果用命令行编译或者在网页里直接运行,则报异常:“无法创建新的堆栈防护页面”。

原因应该是函数反复递归调用导致堆栈溢出,但此时并没有执行到自己的程序,还仅是编译,为什么会报这个错呢?

又分析了一下,发现是在一个自定义控件里,同时定义了两个属性: key 和 Key 。 原因是为了保持调用方的兼容,其实里面的内容是一样的。 public string Key {get{ return key; }}

后来删除了其中一个属性 Key,就好了。具体的原因也不太清楚。可能是 ASP.NET 的运行时不区分大小写吧,把这两个变量当成了一个,结果成了递归调用。

教训就是在asp.net里不要使用仅大小写不同的变量。

posted on 2016-03-01 15:49  五星  阅读(1623)  评论(0)    收藏  举报