web-dev-qa-db-ja.com

Global.asaxをデバッグすることはできますか?

Global.asaxファイルをデバッグできません!

Application_Start()メソッドにいくつかのコードがありますが、メソッドにブレークポイントを設定すると、無視されます!

これは正常ですか?

48
Mehdi

たぶんあなたは試してみてください:

  • タスクバーで開発サーバーを停止する
  • リリースからデバッグへの構成の切り替え
7
nandokakimoto

Application_Start()を破る簡単な方法は、_System.Diagnostics.Debugger_クラスを使用することです。デバッガーを中断したい場所にSystem.Diagnostics.Debugger.Break()を挿入することにより、アプリケーションを強制的に中断できます。

_void Application_Start(object sender, EventArgs e) 
{
     System.Diagnostics.Debugger.Break();

     // ...
}
_
87
  1. デバッガーをIISプロセスに接続します。
  2. Global.asaxファイルを開き、ブレークポイントを配置します。
  3. Web.configファイルにスペースを追加してファイルを保存します(これにより、現在のWebアプリケーションがリセットされます)。
  4. 更新/サイトのWebページに移動します。
  5. デバッガーがブレークポイントで停止したときに驚かされます。 :)
64
John Kelly

Application_Start()はAppDomainごとに1回呼び出されます。ブレークポイントに到達していない場合は、AppDomainが既に作成されていることを意味するため、以下を実行します。

  • クイック起動バーには、VS Webサーバーのアイコンがあります(「Local Host Some Port」というアイコン)。右クリックして、「停止」または「閉じる」を選択します。これにより、AppDomainが強制終了されます。
    • IISを使用している場合は、サイトを手動で再起動する必要があります。
    • または、Web構成ファイルまたはGlobal.asaxファイルを変更するだけで、通常はAppDomainを再起動できます。
  • デバッグを再開します。ここでブレークポイントをヒットする必要があります。
9
Juliet

Webアプリケーションがデバッグモード(<compilation debug="true"> in web.config)。

VSによって開始された開発者のIISを使用している場合は、単に再起動するか、アプリケーションを再構築します。

通常の場合IISには2つのオプションがあります。

  1. Webサイトが開発フォルダー(VS Webプロジェクトがデプロイされている場所)で動作するように構成されている場合、そのWebサイトに設定されたアプリケーションプールを再起動し、最初の要求がサーバーに到達する前にデバッグを開始する必要があります(デバッグ中はいつでもアプリプールを再起動できます) )。
  2. 別のフォルダーまたはリモートサーバー上でも動作するWebサイトの場合、プロセスにアタッチする必要があります。これを行うには、リモートマシンまたは独自のリモートデバッガー(Webサーバーの場所によって異なります)をインストールし、Debug - Attach to processメニューで、コンピューター名を入力し、デバッグするプロセスを選択します。通常、管理モードタイプで動作するw3wp.exeです。
7
terR0Q

はい、それは正常です。

Application_Start()はIISによって処理されます。

しかし、他のすべてのメソッド、たとえば_Session_Start_、およびApplication_Start()を除く他のすべてのメソッドは正常にデバッグできます。

5
user224564

受け入れられたSystem.Diagnostics.Debugger.Break();の別の代替は

void Application_Start(object sender, EventArgs e) 
{
   System.Diagnostics.Debugger.Launch();
   //...
}

サービスが異なる権限で開始された場合でも、コードを壊すことはなく、デバッガーを開始する必要があります。

3
VladL

global.asaxそして新しいものを追加します。私のソリューションでは、global.asaxおよびglobal.asax.cs

すべてのメソッド(Session_StartApplication_Start、...)はボットファイルに含まれていますが、global.asaxが検討されました。したがって、CS内のブレークポイントとコードは何もしません。
ファイルを再作成した後のみ、global.asax.cs適切なメソッドがあり、実行されました。

2
adonis404

F5を押してApplication_Start()関数がすぐに呼び出されることを期待しないでください。 Application_Start()は、アプリケーションへの最初の要求が行われたときにのみ呼び出されます。奇妙だが真実。

0
Kumaresan Lc

すべての回答が機能しない場合は、次を試してください。

<compilation debug="true" ... />

web.config。 ;)

0

私にとって、デバッグブレークポイントは、デバッガーが接続されるまでにIISで既に実行されていました。そのため、小さなスペースでglobal.asaxを変更し、ファイルを保存しました。今ヒットしています。

ここでの解決策: https://wakeupandcode.com/hitting-breakpoints-in-global-asax/

0
Hugo A.