2009-07-20 3 views
0

Ich habe einen WCF-Dienst, den ich mit einem benutzerdefinierten UserNamePasswordValidator und Message-Sicherheit über wsHttpBinding sichern kann. Der Release-Code funktioniert gut. Leider, wenn ich versuche, im Debug-Modus zu laufen, nachdem ich zuvor ungültige Zugangsdaten verwendet habe (die aktuellen Zugangsdaten sind gültig!) VS2008 zeigt ein störendes Dialogfeld an (mehr dazu unten).Fehler beim Debuggen des WCF-Diensts in VS2008 nach UserNamePasswordValidator-Fehler

Eine vereinfachte Version meiner Validate-Methode vom Prüfer könnte wie folgt aussehen:

public override void Validate(string userName, string password) 
    { 
     if (password != "ABC123") 
      throw new FaultException("The password is invalid!"); 
    } 

Der Kunde erhält eine Message mit Innerexception zum FaultException gesetzt explictly warf ich. Dies ist praktikabel, da mein Client den Nachrichtentext der ursprünglichen FaultException anzeigen kann, die der Benutzer sehen sollte.

Leider zeigt VS2008 in allen nachfolgenden Serviceaufrufen den Dialog "Kann nicht automatisch debuggen ..." an. Die einzige Möglichkeit, dies zu verhindern, besteht darin, VS2008 zu beenden, wieder einzutreten und mit den richtigen Anmeldeinformationen eine Verbindung zu meinem Dienst herzustellen. Ich sollte auch hinzufügen, dass dies auch auftritt, wenn ich bei jedem Aufruf einen brandneuen Proxy erstelle. Es besteht keine Chance, dass mein Kanal fehlerhaft ist, wenn ich einen Anruf tätige. Es ist jedoch wahrscheinlich, dass VS2008 an dem zuvor fehlerhaften Kanal hängt und versucht, ihn für Debugging-Zwecke zu verwenden.

unnötig zu sagen, das ist scheiße! Der gesamte Grund, warum ich "schlechte" Anmeldeinformationen eingib, besteht darin, die Handhabung der "schlechten Anmeldeinformationen" zu testen.

Wie auch immer, wenn jemand irgendwelche Ideen, hat wie ich, um diesen Fehler zu bekommen (?!?) Ich würde sehr, sehr dankbar ....

+0

Keine Antwort, aber indem Sie Ihren Dienst einen Fehler zurückgeben, der die Nachricht enthält, die dem Benutzer angezeigt wird, haben Sie Ihren Dienst gekoppelt zu deiner Benutzerschnittstelle. Außerdem, sagen wir einmal, sagen Sie den Hackern niemals, dass der Benutzername gültig ist, indem Sie ihnen sagen, dass das Passwort ungültig ist. Sagen Sie "Benutzername oder Passwort ist ungültig". –

+0

Können Sie beschreiben, wie Sie Ihren Proxy bereinigen? Auch völlig unabhängig, aber die Verwendung von Ausnahmen, um Rückgabewerte zu propagieren, ist im Allgemeinen keine gute Idee. Sie sollten Ausnahmen für Ausnahmesituationen reservieren, nicht nur, dass der Benutzer nicht den richtigen Benutzernamen/Passwort eingibt. –

Antwort

0

Ich fange an, dass das Problem zu denken hat mit Proxy-Schließung zu tun. Ich habe gerade eine exzellente Reihe von WCF-Videos von Michele Leroux Bustamante (http://wcfguidanceforwpf.codeplex.com) gesehen, die mich glauben lassen, dass das Problem in meinem Client-Code liegt. Ich werde es heute versuchen und berichten, wie es gemacht hat ....

+0

OK, ich habe endlich herausgefunden, was vor sich geht. Im Grunde genommen hatte ich Probleme, meinen Proxy auf der Clientseite nicht rechtzeitig zu schließen (d. H. Den Proxy durch Garbage Collection schließen zu lassen). Eine gute Lösung für das Problem finden Sie unter http://wcfproxygenerator.codeplex.com ... –

Verwandte Themen