2017-03-18 1 views
0

Dies ist das seltsamste Ding, das mir jemals passiert ist, also bitte hören Sie mich.Web-API gibt Ergebnisse zurück, aber bricht den Haltepunkt nicht, auch wenn Symbole korrekt geladen sind

  1. Symbole werden richtig geladen. Das ist also kein Problem.
  2. API funktioniert und die Daten sind gültig.
  3. Ich habe 2 Controller im selben Projekt. Der Breakpoint eines Controllers wird getroffen, wenn ich eine GET-Anfrage mache. Aber der Haltepunkt des zweiten Controllers wird nicht getroffen. Es gibt jedoch Ergebnisse korrekt zurück.

Ich setze einen Breakpoint auf der Konstrukteur-Ebene (und habe es überall sonst versucht), aber nicht sicher, was schief läuft.

Der Code ist ziemlich normal C# MVC Web API.

Weiß jemand, was dieses Verhalten verursachen könnte?

Antwort

0

ich ähnliches Problem hatte - versuchen Sie diese Seite heraus, dass breakpoint issue

Zwischenzeit einen Haltepunkt System.Diagnostics.Debugger.Break() zu zwingen könnte helfen, versuchen;

+0

gerade versucht. es schlug immer noch nicht. schau dir jetzt deinen Link an. Vielen Dank! – 90abyss

+0

Klicken Sie auf die Eigenschaften Ihrer Lösungsdatei> Startup Project. Wählen Sie Mehrere Startprojekte und wählen Sie sowohl Ihre Site als auch Ihren Service als Start ausgewählt –

1

Ein Trick, den ich verwenden möchte, ist Exception s zu verwenden. Zuerst ändern Sie einige öffentliche Methode in Ihrem "schlechten" Controller auf nur bedingungslos throw einige Dummy Exception. Dann rufen Sie diese Methode von was auch immer verwendet Sie WebAPI und stellen Sie sicher, dass die Exception tatsächlich geworfen wird. Manchmal wird etwas zwischengespeichert und Code wird nicht neu kompiliert oder so.

Dann hängen Sie Ihren Debugger an und sehen, ob es die Exception fängt. Sie könnten sich an einen falschen Prozess anhängen.

Als nächstes ändern Sie den Code zu throw und catch, dass Exception und einfach protokollieren. Der Trick dabei ist, dass VS Debugger eine Option hat, selbst bei erkannten "user-handled" Ausnahmen zu stoppen: siehe Konfiguration here for VS up to 2013 und here for VS 2015+. Dann können Sie sehen, ob Symbole tatsächlich mit dem Code übereinstimmen.

+0

Dies ist ein großer Trick. Werde es ausprobieren. Vielen Dank! – 90abyss

0

Gibt der Controller, der funktioniert, aber nicht den Haltepunkt erreicht, den Cache aus, was auch immer erzeugt wird? Wenn dies der Fall ist, werden die Daten von dem zurückgegeben, was zwischengespeichert wird, und der Controller wird nicht instanziiert.

Es ist nicht klar, ob Sie MVC- oder WebAPI-Controller verwenden oder was Sie zurückgeben. Wenn es jedoch MVC ist, können Sie nach dem [OutputCache()] Attribut suchen. Sie können auch nach anderen cache-bezogenen Headern Ausschau halten, die möglicherweise hinzugefügt werden.

Je nach Caching-Strategie können Sie möglicherweise umgehen, indem Sie einen zufälligen Abfragezeichenfolgenwert hinzufügen, sodass ein neuer Cacheschlüssel erstellt werden muss. Zum Beispiel:

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

hatte ich das gleiche Problem nur einen Augenblick vor, bevor diese aufzuschreiben ... Versuchen Sie zu Eigenschaften von Ihnen WebAPI gehen und vergleichen, wenn das Projekt-URL im Web-Abschnitt zu finden ist das gleiche wie die URL angegeben in der Webconfig-Datei Ihrer Website. Was mein Problem anbetrifft, so zeigte die Webseite richtig auf das Webapi, was erlaubt, dass irgendwelche Codeänderungen im Webapi gelesen werden, der Debugger wird jedoch an den falschen Ort gerichtet, so dass er keine gesetzten Haltepunkte lesen kann.

Verwandte Themen