我的ASP.NET网站在母版页控件的代码隐藏中发生了什么导致NullReferenceException?

我的ASP.NET网站在母版页控件的代码隐藏中发生了什么导致NullReferenceException?,asp.net,master-pages,nullreferenceexception,pageload,app-offline.htm,Asp.net,Master Pages,Nullreferenceexception,Pageload,App Offline.htm,我有一个最奇怪的问题!我有一个ASP.NET网站应用程序(幸运的是还没有上线)。昨天和以前的每一天,我都可以毫无错误地运行应用程序。昨晚我很晚才关掉电脑时,它工作正常。当我今天运行应用程序时,我收到一条奇怪的消息,告诉我我的网站处于脱机状态,我应该从根目录中删除app_offline.htm页面,使其重新联机 我以前从未见过此消息或页面,因此我在网上搜索发现,显然SQL Server可以在其忙着停止任何传入请求(或类似请求)时暂时将其放在那里。它的正确用途是在您升级或进行维护时停止发送到站点的请

我有一个最奇怪的问题!我有一个ASP.NET网站应用程序(幸运的是还没有上线)。昨天和以前的每一天,我都可以毫无错误地运行应用程序。昨晚我很晚才关掉电脑时,它工作正常。当我今天运行应用程序时,我收到一条奇怪的消息,告诉我我的网站处于脱机状态,我应该从根目录中删除
app_offline.htm
页面,使其重新联机

我以前从未见过此消息或页面,因此我在网上搜索发现,显然SQL Server可以在其忙着停止任何传入请求(或类似请求)时暂时将其放在那里。它的正确用途是在您升级或进行维护时停止发送到站点的请求。我按照建议把它取了下来。我清理并构建了解决方案,然后尝试运行它。它不再运行

现在,我在
母版页
代码隐藏中遇到一个错误,我通常在
页面加载
事件处理程序中访问
母版页
上的控件(如下所示)

我想在这里说清楚。。。此代码中没有错误。
母版页
中有正确命名的元素与此代码中的元素相对应。到今天为止,它一直按预期工作,自上次工作以来,我没有更改任何代码。我现在在第一行得到一个
NullReferenceException
,因为
breadCrumb
元素是
null
。事实上,此处引用的页面中的所有元素都是
null

通常,页面元素在引发
page\u Load
事件时已初始化。是什么导致这种情况停止发生

我已经仔细检查了母版页和它的代码隐藏文件是否仍然是连接的,并且它们是连接的。我还尝试将此代码移动到
Page\u LoadComplete
事件处理程序,但即使在那个阶段,控件仍然没有初始化。我不应该真的改变代码,因为它以前工作得很好

我还注释掉了这段代码,网站也运行了,尽管没有任何样式。有趣的是,当我将原始代码返回到事件处理程序并刷新页面时,它实际上又像以前一样工作了。我成功地加载了许多不同的页面,我认为它已经修复了自己,所以我重新启动了应用程序,然后又出现了相同的错误。清理、构建、更改解决方案配置或重新启动应用程序和VisualStudio都不会产生任何影响

我不确定app_offline.htm是否是一条红鲱鱼,但我以前也从未见过,因此它可能会以某种方式连接起来。从我所读到的,似乎只是删除它会导致服务器自动重新启动应用程序域,所以我看不到连接


我真的希望以前有人遇到过这种奇怪的情况,因为我的想法太多了,在问题解决之前我无法运行我的网站。

好的,所以我终于找到了问题所在。几天前我有一个网站的早期备份,所以我加载了它,它工作了,尽管错过了最后几天的工作。我将最新的项目代码复制到Visual Studio>项目文件夹中,将旧代码保留在Visual Studio>网站文件夹中。我加载了解决方案,它再次正常运行

我基本上比较了网站文件,依次更新每个文件,并定期运行应用程序。最终,应用程序停止工作。我更新的最后一个文件是
母版页
文件,它扩展了出现问题的
母版页

我所做的是注释掉
母版页
中的空
页面加载
事件处理程序。我不明白为什么这会导致这个问题,所以任何解释这一点的评论都会很有帮助,我们将不胜感激

母版页
仅在主页和其他一些页面上使用,因此这解释了为什么我在更改它的当晚没有遇到问题。(更改后,我没有查看任何使用
母版页的页面)。我希望我有,因为那时候追踪会容易得多,但这就是生活


因此,我替换了所有最新的代码,在母版页中添加了空的
Page\u Load
事件处理程序,最后,一切都恢复正常了。

好的,所以我终于找到了问题所在。几天前我有一个网站的早期备份,所以我加载了它,它工作了,尽管错过了最后几天的工作。我将最新的项目代码复制到Visual Studio>项目文件夹中,将旧代码保留在Visual Studio>网站文件夹中。我加载了解决方案,它再次正常运行

我基本上比较了网站文件,依次更新每个文件,并定期运行应用程序。最终,应用程序停止工作。我更新的最后一个文件是
母版页
文件,它扩展了出现问题的
母版页

我所做的是注释掉
母版页
中的空
页面加载
事件处理程序。我不明白为什么这会导致这个问题,所以任何解释这一点的评论都会很有帮助,我们将不胜感激

母版页
仅在主页和其他一些页面上使用,因此这解释了为什么我在更改它的当晚没有遇到问题。(更改后,我没有查看任何使用
母版页的页面)。我希望我有,因为那时候追踪会容易得多,但这就是生活


因此,我替换了所有最新的代码,在母版页中再次添加了空的
页面加载
事件处理程序,最后,一切都恢复正常了。

我认为,nether无法找到
protected void Page_Load(object sender, EventArgs e)
{
    breadCrumb.BreadCrumbs = BreadCrumbs;
    header.MenuItems = MenuItems;
    footer.Footers = Footers;
    head.Controls.Add(CreateCssLink("~/Stylesheets/main.css", "screen"));
    head.Controls.Add(CreateJavaScriptLink("~/Scripts/site.js"));
    if (Context.Session != null && Session["layout"] == null) Session["layout"] = "single";
    if (!ArePreferencesVisible) preferences.Visible = false;
}