現在、_Global.asax.cs
_ファイルに次のルーチンがあります。
_public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Arrangement", action = "Index", id = "" }
);
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
// Debugs the routes with Phil Haacks routing debugger (link below)
RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
}
_
ルーティングデバッガー ...
_F5
_をヒットすると、アプリケーションが起動し、_Index.aspx
_フォルダーに_~/Views/Home/
_という名前のビューがない限り、再定義したにもかかわらず「View missing」エラーメッセージが表示されます。デフォルトルートを削除し、HomeController
を削除しました。ルーティングデバッガーを取得する予定です。そうでない場合は、少なくとも_~/Views/Arrangement/Index.aspx
_の要求が必要です。RegisterRoutes(Routetable.Routes);
のブレークポイントは、デバッグ時にヒットしません。
ビルド、再構築、VSの再起動、クリーニング、再構築などを試みましたが、何も機能しないようです。アプリケーションが現在のバージョンのコードを実行しないのはなぜですか?
私は問題を見つけました:
このMVCアプリケーションは、より大きなソリューションの一部であり、ある時点で、x86環境用にビルドする別のプロジェクトを設定していました(x64を実行しています)。私がそれをしたとき、明らかに他のすべてのプロジェクト-後で追加されたものも-Ctrl+Shift+B
でビルドしないように設定されていたので、デバッガーがブレークポイントにヒットしなかったのだと思います。
溶液:
ソリューションビルドプロパティに移動し(ソリューションを右クリックしてプロパティを選択し、左側のメニューで[ビルド]を選択します)、リストのプロジェクト名の横にある[ビルド]チェックボックスをオンにします。
私は次の答えを見つけました forums.asp.net :
サーバーまたはビルトインWebサーバーとしてIIS7を使用していますか? IIS7を使用しているときに、デバッガーを起動してページを立ち上げ、デバッガーの実行中にGlobal.asax(マークアップファイル、コードビハインドではない)を変更し、ページを更新すると、Application_Startのブレークポイントが変わることに気付きましたヒット。
何が起こっているのかと思いますが、「再生」を押すと、VSはプロセスを起動し、それをアタッチしますが、アタッチするまでに開始イベントがすでに実行されています。 Global.asaxを変更すると、アプリが再起動し、デバッガーが既にアタッチされているため、ブレークポイントにヒットできます。素晴らしい解決策ではありませんが、うまくいくようです。
それが私の場合に起こっていたことです。
System.Diagnostics.Debugger.Break();
をApplication_Start()
に追加します。
これにより、ブレークポイントが強制されます。
この行は、happernと#ifdef debug
へのブレークポイントを回避するためにコメント化する必要があります。
Application_Start()
イベントを再度発生させるには、ローカルデバッグサーバーをシャットダウン/停止する必要があると思います...システムトレイで右クリックして[停止]を選択できるはずです。
問題は、最初にApplication_Start()
トリガーがかかり、次にデバッガーがアタッチすることです。
そのため、目標は、Application_Start()
がまだ実行中に再びトリガーされるようなことをすることです。デバッグのために、通常どおりにデバッガを実行し、web.configファイルを編集(たとえば、改行を追加)して保存します。
今日同じ問題にぶつかり、ローカルIISを使用していました。
これは、ページのロード方法が原因で発生すると考えています。必要なことは、Application_Startにブレークポイントを設定することだけです。アプリケーションを実行し(私の場合、ログイン画面に移動します)、web.configに移動します。編集-スペースを追加してください。そして、Application_StartのブレークポイントにヒットするBrowser.thatを更新します。
以下のテクニックは私のために働いた:
簡単な回避策は、デバッガーがアタッチされた後にglobal.asaxをタッチして、アプリケーションを強制的にリサイクルすることです。次に、次のリクエスト中に、Application_Startに設定したブレークポイントがヒットします。
私はこれをここで見つけました:
http://connect.Microsoft.com/VisualStudio/feedback/details/634919/cannot-debug-application-start-event-in-global-asax
私の場合、私は使用していました
ローカルIIS Webサーバー Webプロジェクト設定
そして、私はVisual Studio Development Serverを使用に変更し、これは機能します。
私の場合、問題は椅子とキーボードの間でした-mvcプロジェクトアセンブリの名前を変更した後、正しいクラスを指すようにGlobal.asaxを更新するのを忘れました。 Global.asaxの「継承」を確認します(Visual StudioでGlobal.asaxを右クリック->マークアップを表示)
<%@ Application Codebehind="Global.asax.cs"
Inherits="Monster.MgsMvc.Web.MvcApplication"
Language="C#" %>
global.asax.csのクラス/名前空間宣言に本当に一致する場合
私はちょうどこの問題を抱えていて、ローカルからIISにIIS
たぶん私のソリューションは誰かを助けるでしょう:
RegisterRoutes
コードを更新します(例-add\remove int i = 1;
)。RegisterRoutes
にブレークポイントを配置します。