it-swarm.com.de

Fehler beim Debuggen der WCF-Dienstnachricht

Ich habe eine Visual Studio 2008-Lösung mit einem WCF-Dienst und einem Client.

Wenn ich meinen Client ausführe und eine Methode von meinem Dienst aus aufrufe, erhalte ich die Meldung "Home.Service kann nicht automatisch debuggen. Die Remoteprozedur konnte nicht debuggt werden. Dies weist normalerweise darauf hin, dass das Debuggen auf dem Server nicht aktiviert wurde. "

Ich habe gegoogelt und folgendes ausprobiert.

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

wurde in app.config sowohl auf dem Client als auch auf dem Server hinzugefügt.

Ich habe auch sichergestellt, dass das Projekt im Debug-Modus kompiliert wird.

Was könnte diese Nachricht sonst noch verursachen?

Bearbeiten: Weitere Informationen zu Feedback-Fragen hinzugefügt

  • Es verwendet wsHttpBinding
  • Ich habe gesetzt

    <serviceDebug includeExceptionDetailInFaults="true"/>
    
  • Ich benutze

    var service = new HomeReference.HomeServiceClient();
    service.ClientCredentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials;
    

Leider erscheint der Fehler beim ersten Aufruf einer Methode in meinem Service. Ich kann die Messagebox abweisen und die Anwendung funktioniert weiterhin. Alle Ausnahmen, die auf den Server geworfen werden, werden jedoch nicht an den Client zurückgegeben (ich nehme an, dass dies der Fall sein sollte).

31
Frode Lillerud

In meinem Fall stellte sich heraus, dass das Problem ein Missverhältnis zwischen den Sicherheitseinstellungen auf Client und Server war. Ich habe eine benutzerdefinierte Bindung wie folgt verwendet:

<customBinding>
    <binding name="AuthorisedBinaryHttpsBinding" receiveTimeout="00:03:00" sendTimeout="00:03:00">
      <!-- this next element caused the problem: -->
      <security authenticationMode="UserNameOverTransport">
      </security>
      <binaryMessageEncoding>
        <readerQuotas maxDepth="100" maxStringContentLength="1000000"
          maxArrayLength="655360000" />
      </binaryMessageEncoding>
      <httpsTransport />
    </binding>
  </customBinding>

Wenn ich das Sicherheitselement entfernte, das ich oben über dem Problem mit der Meldung "Fehler beim automatischen Debuggen nicht möglich" hervorgehoben habe, ging es nicht mehr. 

Um das Problem zu lösen, habe ich zuerst WCF Tracing eingeschaltet. Dies zeigte mir, dass WCF eine MessageSecurityException warf: 

Der Sicherheitsprozessor konnte Keinen Sicherheitsheader in der Nachricht finden. Dies kann der Fall sein, weil es sich bei der Nachricht um einen nicht gesicherten Fehler handelt oder weil zwischen den Kommunizierenden Parteien eine Verbindliche Nichtübereinstimmung besteht. Dies kann Auftreten, wenn der Dienst für die Sicherheit Konfiguriert ist und der Client die Sicherheit Nicht verwendet.

Das zeigte mir die Binding-Einstellungen auf der Client-Seite. Es stellte sich heraus, dass ich meiner benutzerdefinierten Bindung dort nicht das erforderliche Sicherheitselement hinzugefügt hatte. Da ich dies durch den Code machte, brauchte ich Folgendes (beachten Sie die 3. Zeile):

  var binding = new CustomBinding(
      binaryEncoding,
      SecurityBindingElement.CreateUserNameOverTransportBindingElement(),
      new HttpsTransportBindingElement { MaxReceivedMessageSize = MaxMessageSize, });

Ich habe keine Ahnung, warum Visual Studio diesen Fehler angezeigt hat. Es scheint mir ein Fehler zu sein.

13
Samuel Jack

Ich kämpfte mit diesem exakt gleichen Fehler über eine Stunde lang und tief, und siehe da, ich habe VS2008 neu gestartet und es hat sich magisch repariert. Probieren Sie es aus, es könnte Ihnen etwas Zeit sparen.

39
Exist

Das automatische Anhängen an einen Dienst hat die folgenden Einschränkungen:

  • Der Dienst muss Teil der Visual Studio-Lösung sein, die Sie debuggen.

  • Der Dienst muss gehostet werden. Es kann Teil eines Websiteprojekts (Dateisystem und HTTP), eines Webanwendungsprojekts (Dateisystem und HTTP) oder eines WCF-Dienstbibliothekprojekts sein. WCF Service Library-Projekte können entweder Service Libraries oder Workflow Service Libraries sein.

  • Der Dienst muss von einem WCF-Client aus aufgerufen werden.

  • Das Debuggen muss mit dem folgenden Code in der Datei app.config oder Web.config aktiviert werden:

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

Siehe Einschränkungen beim WCF-Debugging

Wenn sich beide Projekte (Client und Service) in derselben Lösung befinden, jedoch in verschiedenen Prozessen ausgeführt werden (z. B. wenn Sie Ihren lokalen IIS Server für die Entwicklung verwenden und Ihre Webanwendung auf einem anderer Anwendungspool als der von ihm genutzte Dienst), müssen Sie möglicherweise " Mehrere Startprojekte " für die Lösung aktivieren (in den Eigenschaften der Lösung -> Startprojekt), damit der Debugger eine Verbindung herstellen kann beide. 

Um zu vermeiden, dass das Fenster des Dienstbrowsers bei jedem Debugging angezeigt wird, können Sie die "Startaktion" (in den Eigenschaften des Dienstprojekts) auf "Keine Seite öffnen. Warten auf Anforderung von externer Anwendung".

Dies ist aus persönlicher Erfahrung und kann anderen helfen.

8
Jorge Garcia

Der andere Grund, warum Sie diesen Fehler sehen könnten (und ich glaube, der Fall ist für mich der Fall), ist, wenn Sie unter 64-Bit-Windows laufen. Offenbar unterstützt Visual Studio keine Unterstützung für x64-Debugger.

Sie können dies umgehen, indem Sie das Plattformziel für die konsumierende Anwendung ändern:

Projekteigenschaften -> Erstellen -> "Plattformziel" in "x86" ändern.

Leider funktioniert dies nicht für mich, da ich versuche, in Windows Azure Development AppFabric auszuführen, was anscheinend alles im 64-Bit-Modus erfordert!

6
Dave

Ich habe auch das gleiche Problem. Ich habe in Client & Service-Konfigurationsdateien wie geändert

Compilierungs-Debugging ist auf true gesetzt.

Das hat für mich funktioniert.

1
sriram

Ich hatte das gleiche Problem in Visual Studio 2017. Nachdem ich den versteckten .vs-Ordner im Stammverzeichnis des Lösungsordners gelöscht hatte, konnte ich erneut debuggen.

0
Bobmonga

Hast du es versucht

    <serviceBehaviors>

  <serviceDebug includeExceptionDetailInFaults="true"/>
            </behavior>
        </serviceBehaviors>

Zum Debuggen?

Edit: Ich denke, ich habe die Frage falsch verstanden

0
kd7

In meinem Fall stellte sich das Problem als etwas völlig anderes heraus. Ich hatte den Namen einer Operation auf dem Webservice geändert und vergessen, den Client zu aktualisieren. Aus irgendeinem Grund führte dies zu dem Fehler "Fehler beim automatischen Debuggen ...".

0
T.J.Kjaer

Stellen Sie in Ihrem Web-Service web.config sicher, dass das Kompilierungs-Debug auf true gesetzt ist.

0
joseph

Ich hatte ein ähnliches Problem und es stellte sich heraus, dass die Windows-Authentifizierung im Verzeichnis IIS site/virtual nicht aktiviert wurde.

Haben Sie versucht, den Authentifizierungsmodus auf "Integrated" anstelle von "Anonymous" zu setzen? http://msdn.Microsoft.com/en-us/library/x8a5axew(VS.80).aspx

0
mundeep

Es kann auch sein, dass in IISExpress und IIS dieselbe Portnummer verwendet wird. Wenn Sie eine WCF-Anwendung in Visual Studio und IISExpress entwickeln und anschließend dieselbe Anwendung auf Ihrem lokalen IIS installieren, stellen Sie sicher, dass Sie nicht dieselbe Portnummer in IIS und IISExpress verwenden. Die Verwendung derselben Portnummer führt zu dieser Fehlermeldung.

0
GunnarS