Asp.net应用程序文件名重名引起的bug
问题描述:
在使用Vistual Studio 开发Asp.net网站时,假设我们在网站根目录添加了一个Default.aspx文件,同时IDE会为我们生成一个Default.aspx.cs的类文件,类名为:
public partial class _Default : System.Web.UI.Page
如果我们再在网站根目录添加一个MasterPage页面,文件名为:Default.master,同时IDE会为我们生成一个Default.master.cs的类文件,
类名为:
public partial class _Default : System.Web.UI.MasterPage
此时我们会发现,IDE为我们生成的两个类文件中的类的名字是相同的并且这两个类是在同一个命名空间下。一般情况下,在同一个命名空间下,若出现两个相同类名的类是无法编译通过的。但是在asp.net里,出现上面那种情况,编译却可以通过,就算在asp.net development server下进行调试也不会出现任何错误。但是,一旦我们把网站发布,并部署到IIS后,我们要是去访问Default.aspx页面时,就会出现报错黄页, 错误提示的大概内容就是:程序集同命名空间下出现了同名类。其实这个问题根源就在于我们上面提到的那种情况(类文件由IDE自动生成)。因此,我们不能过于相信IDE的自动生成代码功能,在使用IDE添加asp.net文件时,最好不要创建同名的文件(不算文件扩展名),与此同时,最好能够检查IDE自动生成的代码。