0

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

これまでにこのメッセージやページを見たことがないので、SQL Serverが受信要求を停止するのに忙しい間に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には、このコードに対応する要素が正しく名前が付けられています。それは今日まで期待通りに働いていたし、最後に働いて以来、コードを変更していない。 breadCrumb要素がnullであるため、最初の行にNullReferenceExceptionが表示されます。実際、ここで参照されるページの要素はすべてnullです。

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

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

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

app_offline.htmが赤ちゃんであるかどうかはわかりませんが、どちらか前に見たことがないので接続している可能性があります。私が読んだところでは、それを削除するだけでサーバーが自動的にアプリケーションドメインを再起動して、接続が見えなくなっているようです。

この奇妙な状況に遭遇する前に、私はすべてアイデアが足りないため、これが修正されるまで自分のウェブサイトを実行することができないことを願っています。

+0

netherは、SQL Serverがどのようにサイト上でapp_offline.htmを設定できるかを確認できます。 – Aristos

+0

私は 'app_offline.htm'をgoogleにタイプし、3番目の結果はこのページです:http://www.daniweb.com/web-development/aspnet/threads/215912/why-app_offline.htm-is-created-automatically-何が謎なのか?あなたはあまりにも難しく見えなかったようです。いずれにせよ、私はSQL Serverがそれをしたと主張していませんでした。ただそれを読んだだけです。 – Sheridan

+0

ビジュアルスタジオ2008はこのファイルを追加します。これは正しいです。ビジュアルスタジオはプロジェクトをロードするときにこのファイルを追加し、プロジェクトが完全にロードされている場合は削除します。なんらかの理由でファイルを削除できない場合、ファイルは残っています。ビジュアルスタジオは、サイトを開発するとき。 SQLはどこに配置するのかわからなかった...とにかく私はこれをもう一度チェックするが、SQLはそれを何とかしないと思う。 – Aristos

答えて

0

私は最終的に問題を追跡しました。私は数日前からウェブサイトの以前のバックアップを持っていたので、それをロードして、それは最後の数日間の作業が行方不明になりました。最新のプロジェクトコードをVisual Studio> Projectsフォルダにコピーし、古いコードをVisual Studio> Websiteフォルダに残しました。私はそのソリューションをロードし、もう一度うまく走った。

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

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

このMasterPageは、ホームページなどで使用されているだけなので、変更した夜に問題が発生しなかった理由を説明します。 (私は、変更を行った後にそれを使用したページを見ていなかった)MasterPage。私はそれを追跡する方がはるかに簡単だったので私が持っていたが、それは人生である。

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

関連する問題