1

私は最も奇妙な問題を抱えています!ASP.NET Webサイトアプリケーションを持っています(幸いなことにまだライブではありません)。昨日も毎日も、エラーなしでアプリケーションを実行できました。昨夜遅くにコンピューターの電源を切ったときは、問題なく動作していました。app_offline.htm今日アプリケーションを実行すると、Webサイトがオフラインであり、ルートディレクトリからページを削除してオンラインに戻す必要があるという奇妙なメッセージが表示されました。

このメッセージやページはこれまで見たことがないので、オンラインで検索したところ、SQL Serverは、着信要求(または同様のもの)を停止するために忙しいときに一時的にそこに配置できるようです。その適切な使用法は、アップロードまたはメンテナンスを行っているときに、サイトへのリクエストの送信を停止することです。私は提案されたようにそれを削除し始めました。私はソリューションをクリーンアップして構築し、それを実行しようとしました。実行されなくなります。

これで、イベントハンドラー(以下に表示)MasterPageのコントロールに通常アクセスする場所の背後にあるコードでエラーが発生します。MasterPagePage_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、最初の行にが表示されます。実際、ここで参照されているページのすべての要素はです。breadCrumbnullnull

通常、ページ要素はPage_Loadイベントが発生するまでに初期化されています。これが起こらなくなった原因は何ですか?

MasterPageとそのコードビハインドファイルがまだ接続されていることを再確認しました。また、このコードをPage_LoadCompleteイベントハンドラーに移動しようとしましたが、その段階でもコントロールはまだ初期化されていませんでした。以前は問題なく機能していたので、コードを変更する必要はありません。

また、このコードをコメントアウトすると、スタイルはありませんが、Webサイトが実行されました。興味深いことに、元のコードをイベントハンドラーに戻し、ページを更新すると、実際には以前と同じように機能しました。いくつかの異なるページを正常にロードし、それ自体が修正されたと思ったので、アプリケーションを再起動してから、同じエラーが再度発生しました。クリーニング、ビルド、ソリューション構成の変更、またはアプリケーションとVisualStudioの再起動による違いはありません。

app_offline.htm燻製ニシンかどうかはわかりませんが、これまで見たことがないので、なんとなく繋がっているのかもしれません。私が読んだところによると、それを削除するだけでサーバーがアプリケーションドメインを自動的に再起動するため、接続が表示されないようです。

私はすべてアイデアがなく、これが修正されるまで自分のWebサイトを運営できないため、誰かがこの奇妙な状況に遭遇したことを本当に望んでいます。

4

1 に答える 1

1

さて、私はついに問題を突き止めました。私は数日前からウェブサイトの以前のバックアップを持っていたので、それをロードして、最後の数日間の作業を逃したにもかかわらず、それは機能しました。最新のプロジェクトコードをVisualStudio>Projectsフォルダーにコピーし、古いコードをVisualStudio>Websiteフォルダーに残しました。ソリューションをロードしましたが、再び正常に実行されました。

私は基本的にウェブサイトのファイルを比較し、それぞれを順番に更新し、定期的にアプリケーションを実行しました。最終的に、アプリケーションは動作を停止しました。私が最後に更新したファイルは、問題のあるMasterPageファイルを拡張したファイルでしたMasterPage

Page_Load私が行ったことは、の空のイベントハンドラーをコメントアウトすることでしたMasterPage。それがなぜこの問題を引き起こすのか理解できないので、それを説明するコメントは役に立ち、ありがたいです。

これMasterPageはホームページと他のいくつかのページでのみ使用されているので、変更した夜に問題に遭遇しなかった理由が説明されています。(変更を加えた後、それを使用したページは表示していませんでしMasterPageた)。その時はずっと簡単に追跡できたので、持っていればよかったのですが、それが人生です。

そこで、最新のコードをすべて置き換え、空のPage_LoadイベントハンドラーをMasterPage再度追加しました。最後に、すべてが再び機能しています。

于 2012-05-11T22:17:38.857 に答える