18

Visual Studio で HttpHandler にブレークポイントを設定しました。HttpHandler は、VS 開発 Web サーバーでアプリケーションを実行してデバッグしようとしている .ashx ファイルです。ブレークポイントがヒットしません。

どうすればステップスルーできますか?

編集:私のブレークポイントはヒットしていません

4

11 に答える 11

10

返信が遅くなりましたが、以前の回答で回答が見つからなかった場合に役立つ場合があります。

既存の ashx ハンドラーをコピーしてハンドラーを作成した場合、問題はハンドラーのマークアップ ファイルがまだ元のハンドラーを指している可能性があります。

VS はデフォルトで、マークアップ ファイルがほとんど必要ないため、.ashx ファイルをダブルクリックすると .ashx.cs ファイルを開きます。

ashx VS を右クリックすると、View Markup のオプションが表示されます。Class プロパティが古いハンドラーを参照していないことを確認してください。

<%@ WebHandler Language="C#" CodeBehind="MyNewHandler.ashx.cs"
    Class="mynamespace.MyOldHandler" %>
于 2012-09-17T16:59:21.593 に答える
6

この問題があり、ashx ファイルがコンパイルされなかったことが判明しました。それまでコンパイルエラーが発生しなかったため、実行時にコンパイルされると思います。さらに、次の理由により、HttpCompileException を示す死のイエロー スクリーンが表示されませんでした。

  • 私は元々、asxh ファイルのバグを修正するつもりでした。
  • 知らず知らずのうちにコンパイル エラーが発生していたバグを修正するために、ファイルに変更を加えました。
  • バグ修正をテストしたところ、カスタム エラーで構成した万能の例外が発生しました。
  • 私はそれが私が修正したのと同じバグだと思った
  • ブレークポイントを設定しましたが、ヒットしない理由がわかりませんでした。

最終的に、新しく導入された例外が表示され、コンパイル エラーが修正され、デバッガーが最初に起動されたときではなく、ハンドラーが呼び出されたとき (AJAX 呼び出しによって) は点灯しませんが、ブレークポイントが正常にヒットするようになりました。私の場合)。

于 2009-08-12T18:36:00.813 に答える
4

Visual Studioでハンドラーファイルを開き、言ったようにブレークポイントを配置します。次に、ブラウザにWebアプリケーションをロードします(もちろん、アプリケーションをデバッグモードで起動します)。ブレークポイントが灰色のままで黒く塗りつぶされていない場合は、ハンドラーがWebアプリケーションに適切に登録されていない可能性があります。それが主な問題です。あなたによると、すべてがうまくいっている場合は、ソリューション全体のクリーン+再構築を試してみてください。そして、プロジェクトをスタートアッププロジェクトとして設定します(複数のプロジェクトを使用している場合)。多くの場合、それはすでに役立ちます。

于 2009-07-28T13:24:54.447 に答える
2

ローカルIISの代わりに組み込みのWebサーバーを使用してデバッグを実行してみてください(ローカルIISを使用している場合はその逆)。2つのWebサーバーにはわずかな違いがあります。

于 2009-07-28T13:23:17.087 に答える
1

上記のいずれも Visual Studio 2015 では機能しませんでしたが、sorinc の応答により、ハンドラー ファイルの先頭近くのどこかに次のコードを追加するように促されました。

System.Diagnostics.Debugger.Break();

デバッガーは、設定したブレークポイントで停止しました。

于 2015-11-24T01:43:31.027 に答える
0

上記の解決策は私にはうまくいきませんでした。ハンドラーはすでに正しく登録されています。

私のハンドラーは(Webアプリケーションではなく)Webサイトプロジェクトにあります。同じVisualStudioソリューション内の別のWebサイト(テストプロジェクト)からアクセスします。デバッグシンボルをロードするために、起動時に複数のプロジェクトを開始するようにソリューションを設定しました。最初にハンドラー、次にテストプロジェクト。

于 2011-08-23T20:29:32.720 に答える
0

アプリ内の Web ページから http ハンドラーにアクセスしてデバッグできない場合は、Web ブラウザー内でハンドラーの URL に直接アクセスしてみてください。

例えば:

http://localhost/YourSite/YourHandler.ashx
于 2013-05-06T18:56:38.453 に答える
0

IIS を使用してデバッグするときにも同じ問題が発生しました。

修正: * IIS にハンドラー マッピングを追加します。タイプを完全修飾ハンドラー クラス名として指定します (例: MyCompany.MyApp.MyHandler)。

私の web.config にも httpHandlers 要素がありました。

<add verb="*" path="*.p1s" type="MyCompany.MyApp.MyHandler, MyWebService" />

(私の構築したアセンブリは MyWebService.dll でした)

于 2011-06-13T12:44:00.087 に答える
-2

Visual Studioで、[デバッグ]メニューを確認します。そこにはステップイン、ステップオーバーなどがあり、キーボードのバインドに応じて、通常はF10を押すことができます。

于 2009-07-28T13:19:26.700 に答える