在进行一个相当大的web应用程序项目时,我决定通过使用CompilationMode="Never" @Page属性标记一些页面和控件,可以获得一点新鲜空气。到目前为止还不错,按预期工作,然后就发生了。我将要解释的一个角落案例场景出人意料地表现得很好。此方案是嵌套母版页。
在继续之前先快速地挑逗一下。如果您将顶部的CompilationMode="Always",母版页标记为CompilationMode="Never"?,并将其下面的所有其他页面标记为,您认为可以进行多深的嵌套?不,它不是无限的,也不是ASP.NET所拥有的内部数。2.为什么?-我不知道,我希望你们中的一些聪明人能启发我?
我附加了一个带有5个嵌套母版页的项目,以演示我所说的内容:嵌套母版页Web应用程序测试项目。
另一个意外地工作的角落案例--如果您有5个嵌套的母版页,将第二个更改为CompilationMode=“始终”,而所有其他的则改为CompilationMode=“从不”。您会注意到,3母版页正在应用两次!
如果我正在做的事情是不正确的,请帮助我理解,或者确认这个问题。
ASP.NET运行时版本: 2.0,.NET: 3.5
编辑:
附加的项目将所有母版页设置为CompilationMode="Never".。ASPX页面按需要显示。更改第一个主版(Site.master),使CompilationMode=“始终”,以了解我在说什么。
发布于 2010-01-18 19:44:31
更新(1/21/2010):好消息:经过更多的调查后,这个问题被VS2010解决了。修复是后Beta 2,所以它将是下一个公共建设的一部分。我没有确切的日期,但应该不会太远。
是的,我似乎还记得之前提到的这一点,实际上,涉及嵌套母版页和CompilationMode=的一些场景“从未”中断过。
看看一个旧邮件线程,我认为只有某些组合才会出现这种情况。它看起来好像坏了( NoCompile的意思是compilationMode=never):
当时,我们没有修复这个问题,因为修复并不简单,而且这种情况并不常见。
请注意,当涉及到NoCompile页面时,大多数好处是将其用于终端节点aspx页,而不是母版页。通常,NoCompile页面的运行速度要比编译后的页面慢一些。他们的好处是,他们没有第一次编译命中,他们使用较少的内存。此外,它们可以在内存压力下完全卸载。这就是为什么当你拥有大量的端点页面(Sharepoint使用它们)时,它们是很有意义的。但是在母版页面上(大多数应用程序只有少数几个页面共享),这种好处将是微乎其微的。当然,您不能在NoCompile页面中使用代码,这也是很少有人使用它们的主要原因。
因此,简单的总结是:您是对的,这是一个bug!:),建议的解决方法是避免母版页使用CompilationMode=never。
https://stackoverflow.com/questions/2086442
复制相似问题