2017-03-18 3 views
0

これは私に起こったことが最も奇妙なことですので、私を聞いてください。Web APIは結果を返しますが、シンボルが正しくロードされていてもブレークポイントはヒットしません。

  1. シンボルが正しくロードされています。だからそれは問題ではない。
  2. APIが動作しており、データが有効です。
  3. 同じプロジェクトに2つのコントローラーがあります。 1つのコントローラのブレークポイントは、私がGET要求を行うとヒットします。しかし、2番目のコントローラのブレークポイントはヒットしません。しかし、結果は正しく返されます。

私はコンストラクタレベルでブレークポイントを設定していますが(他の場所では試してみましたが)何がうまくいかないかはわかりません。

コードはかなり普通のC#MVC Web APIです。

誰でもこの現象が発生する可能性がありますか?

答えて

0

私は同様の問題を持っていた - )( 一方breakpoint issue

がブレークポイント System.Diagnostics.Debugger.Breakを強制しようと役立つかもしれないことから、このサイトを試してみてください。

+0

ちょうど試しました。それでもヒットしなかった。今あなたのリンクを見てください。ありがとう! – 90abyss

+0

ソリューションファイル>スタートアッププロジェクトのプロパティをクリックします。複数のスタートアッププロジェクトを選択し、サイトとサービスの両方を開始として選択してください –

1

私が使いたいトリックはExceptionです。まず、あなたの「悪い」の公的方法を無条件でthrowダミーのに変更します。 WebAPIを使用するものからそのメソッドを呼び出し、実際にExceptionがスローされていることを確認します。時には何かがキャッシュに入れられ、コードが実際に再コンパイルされたり何かにされたりしないことがあります。

デバッガを接続して、Exceptionをキャッチするかどうかを確認します。間違ったプロセスに接続している可能性があります。

次のコードをthrowcatchに変更すると、Exceptionとなり、ログに記録されます。ここでのトリックは、VS Debuggerには、ユーザーが処理した別の例外でも停止するオプションがあることです。構成here for VS up to 2013here for VS 2015+を参照してください。シンボルが実際にコードと一致するかどうかを確認できます。

+0

これはすばらしいトリックです。これを試してみる。ありがとう! – 90abyss

0

動作してもブレークポイントにヒットしないコントローラは、生成されているものをキャッシュに出力しますか?そうであれば、キャッシュしているデータによってデータが返され、コントローラはインスタンス化されません。

MVCまたはWebAPIコントローラを使用しているか、返品しているかは不明です。しかし、それがMVCなら、[OutputCache()]属性を探すことができます。あなたはまた、追加されているかもしれない他のキャッシュに関連するヘッダーに注意を払うことができます。

キャッシング戦略によっては、新しいキャッシュキーを作成する必要があるように、ランダムなクエリ文字列値を追加することで回避できます。たとえば:

http://example.com/some/path/1234?cow=moo 
-1

私はこれを下に書き込む前に、ちょっと前に同じ問題を抱えていた...ウェブセクションで見つけたプロジェクトのURLは、URLと同じであればWEBAPIと比較し、あなたの特性のために行くお試しくださいWebサイトのwebconfigファイルで指定します。私の問題としては、ウェブサイトはwebapiを正しく指していましたが、webapiのコード変更を読み取ることができますが、デバッガは間違った場所に置かれているため、ブレークポイントを読み取ることができません。

関連する問題