Visual Studio で HttpHandler にブレークポイントを設定しました。HttpHandler は、VS 開発 Web サーバーでアプリケーションを実行してデバッグしようとしている .ashx ファイルです。ブレークポイントがヒットしません。
どうすればステップスルーできますか?
編集:私のブレークポイントはヒットしていません
Visual Studio で HttpHandler にブレークポイントを設定しました。HttpHandler は、VS 開発 Web サーバーでアプリケーションを実行してデバッグしようとしている .ashx ファイルです。ブレークポイントがヒットしません。
どうすればステップスルーできますか?
編集:私のブレークポイントはヒットしていません
返信が遅くなりましたが、以前の回答で回答が見つからなかった場合に役立つ場合があります。
既存の ashx ハンドラーをコピーしてハンドラーを作成した場合、問題はハンドラーのマークアップ ファイルがまだ元のハンドラーを指している可能性があります。
VS はデフォルトで、マークアップ ファイルがほとんど必要ないため、.ashx ファイルをダブルクリックすると .ashx.cs ファイルを開きます。
ashx VS を右クリックすると、View Markup のオプションが表示されます。Class プロパティが古いハンドラーを参照していないことを確認してください。
<%@ WebHandler Language="C#" CodeBehind="MyNewHandler.ashx.cs"
Class="mynamespace.MyOldHandler" %>
この問題があり、ashx ファイルがコンパイルされなかったことが判明しました。それまでコンパイルエラーが発生しなかったため、実行時にコンパイルされると思います。さらに、次の理由により、HttpCompileException を示す死のイエロー スクリーンが表示されませんでした。
最終的に、新しく導入された例外が表示され、コンパイル エラーが修正され、デバッガーが最初に起動されたときではなく、ハンドラーが呼び出されたとき (AJAX 呼び出しによって) は点灯しませんが、ブレークポイントが正常にヒットするようになりました。私の場合)。
Visual Studioでハンドラーファイルを開き、言ったようにブレークポイントを配置します。次に、ブラウザにWebアプリケーションをロードします(もちろん、アプリケーションをデバッグモードで起動します)。ブレークポイントが灰色のままで黒く塗りつぶされていない場合は、ハンドラーがWebアプリケーションに適切に登録されていない可能性があります。それが主な問題です。あなたによると、すべてがうまくいっている場合は、ソリューション全体のクリーン+再構築を試してみてください。そして、プロジェクトをスタートアッププロジェクトとして設定します(複数のプロジェクトを使用している場合)。多くの場合、それはすでに役立ちます。
ローカルIISの代わりに組み込みのWebサーバーを使用してデバッグを実行してみてください(ローカルIISを使用している場合はその逆)。2つのWebサーバーにはわずかな違いがあります。
上記のいずれも Visual Studio 2015 では機能しませんでしたが、sorinc の応答により、ハンドラー ファイルの先頭近くのどこかに次のコードを追加するように促されました。
System.Diagnostics.Debugger.Break();
デバッガーは、設定したブレークポイントで停止しました。
上記の解決策は私にはうまくいきませんでした。ハンドラーはすでに正しく登録されています。
私のハンドラーは(Webアプリケーションではなく)Webサイトプロジェクトにあります。同じVisualStudioソリューション内の別のWebサイト(テストプロジェクト)からアクセスします。デバッグシンボルをロードするために、起動時に複数のプロジェクトを開始するようにソリューションを設定しました。最初にハンドラー、次にテストプロジェクト。
アプリ内の Web ページから http ハンドラーにアクセスしてデバッグできない場合は、Web ブラウザー内でハンドラーの URL に直接アクセスしてみてください。
例えば:
http://localhost/YourSite/YourHandler.ashx
IIS を使用してデバッグするときにも同じ問題が発生しました。
修正: * IIS にハンドラー マッピングを追加します。タイプを完全修飾ハンドラー クラス名として指定します (例: MyCompany.MyApp.MyHandler)。
私の web.config にも httpHandlers 要素がありました。
<add verb="*" path="*.p1s" type="MyCompany.MyApp.MyHandler, MyWebService" />
(私の構築したアセンブリは MyWebService.dll でした)
Visual Studioで、[デバッグ]メニューを確認します。そこにはステップイン、ステップオーバーなどがあり、キーボードのバインドに応じて、通常はF10を押すことができます。