我有一个最奇怪的问题!我有一个 ASP.NET 网站应用程序(幸运的是还没有上线)。昨天和之前的每一天,我都可以毫无错误地运行该应用程序。当我昨晚深夜关闭计算机时,它工作正常。今天运行应用程序时,收到一条奇怪的消息,告诉我我的网站已离线,我应该app_offline.htm
从根目录中删除该页面以使其重新上线。
我以前从未见过此消息或页面,因此我在网上搜索发现显然 SQL Server 可以在忙于停止任何传入请求(或类似的东西)时将其暂时放在那里。它的正确用途是在您更新或进行维护时停止请求访问您的站点。我按照建议继续删除它。我清理并构建了解决方案,然后尝试运行它。它不再运行。
现在,我的MasterPage
代码后面出现错误,我通常MasterPage
在Page_Load
事件处理程序中访问控件(如下所示)。
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;
}
我想在这里澄清一下……这段代码没有错误。中有正确命名的元素MasterPage
与此代码中的元素相对应。直到今天它一直按预期工作,自上次工作以来我没有更改任何代码。我现在NullReferenceException
在第一行得到一个,因为breadCrumb
元素是null
. 实际上,此处引用的页面中的所有元素都是null
.
Page_Load
通常,页面元素在引发事件时已经初始化。是什么导致这种情况停止发生?
我已经仔细检查了 MasterPage 及其文件后面的代码是否仍然连接并且它们是。我还尝试将此代码移至Page_LoadComplete
事件处理程序,但控件仍未初始化,即使在那个阶段也是如此。我真的不必更改代码,因为它以前工作得很好。
我还注释掉了这段代码,网站运行了,尽管没有任何样式。有趣的是,当我将原始代码返回给事件处理程序并刷新页面时,它实际上又像以前一样工作了。我成功加载了许多不同的页面,我认为它已经修复了,所以我重新启动了应用程序,然后又遇到了同样的错误。再多的清理、构建、更改解决方案配置或重新启动应用程序和 Visual Studio 都不会产生任何影响。
我不确定这是否app_offline.htm
是一条红鲱鱼,但我以前从未见过它,所以它可能以某种方式连接。从我读到的,似乎只是删除它会导致服务器自动重新启动应用程序域,所以我看不到连接。
我真的希望有人以前遇到过这种奇怪的情况,因为我完全没有想法,在解决这个问题之前我无法运行我的网站。