Ich weiß, dass das Ausgeben einer ganzen Zahl an einen ungültigen Aufzählungswert aufgrund von Flags nicht zu einer Ausnahme in C# führt. Hier war ich, eine Tabelle in einer DB-Tabelle spezifizierend und seine Werte 1-3
mit EntityFramework erhalten. Auf meiner Serverseite werfe ich die Werte in eine Enum XyzType
Bereich von 0-2
, die offensichtlich den ungültigen Wert (XyzType)3
generiert. Jetzt lege ich diesen Wert in eine XyzDTO
und sende es an einen WCF-Client. Die bei der Deserialisierung Einzahler dieser sehr vage Beschreibung:Das Konvertieren in einen ungültigen Aufzählungswert führt zu einer nicht angegebenen Ausnahme auf der Clientseite.
Jetzt habe ich einige andere Beiträge gelesen Ausnahmen von Deserialisieren ungültige XML verursacht zu diskutieren und es macht alles Sinn.
Meine Frage ist, wie kommt es, dass ich keine nützlichen Informationen bekommen habe, was die Ursache überhaupt war? Ich habe die letzten 1,5 Stunden mit diesem Fehler verbracht, bis ich den Unterschied zwischen den Enum- und den DB-Werten herausgefunden habe. Ist es ein Fehler in der WCF-Fehlerbehandlung, dass keine nützlichen Informationen angegeben wurden? Wenn ja, sollte MS benachrichtigt werden? Haben Sie gute Praktiken, um solche Szenarien in Zukunft zu vermeiden?
EDIT: Bitte beachten Sie, ich habe keine web.config. Meine Serverseite ist ein WCF-Dienst innerhalb eines Windows-Dienstes, dh. Ich habe app.config.
EDIT2: Es scheint mir einige Missverständnisse in Bezug auf dieses Problem und was ive versucht. Das Überprüfen der InnerExceptions der CommunicationException im Debugger liefert überhaupt keine nützlichen Informationen. Ich habe auch bereits "includeExceptionDetailsInFaults" = true auf der Serverseite, aber die Ausnahme wird nicht von der Serverseite geworfen! Es wird während der Deserialisierung auf der Clientseite verursacht.
EDIT3: Einige Antworten haben vorgeschlagen, die Verfolgung auf der Clientseite zu aktivieren. Ich habe das jetzt versucht, aber für dieses Problem gibt es auch keine nützlichen Informationen. Here ist eine Verbindung zum Ausgang.
Können Sie zusätzlich zeigen Sie Ihre 'XyzType'-Enum? – khlr
Ich habe es als nichts als Werte x, y, z (0,1,2) ausgeschlossen. – LuqJensen
Ich fragte, weil, wenn Sie die enum von geändert haben, sagen wir, "x = 1, y = 2, z = 3" zu "x = 0, y = 1, z = 2" (um mit Ihrer DB zu entsprechen), dass könnte der Grund für einen (noch nicht aktualisierten) Client sein, eine Ausnahme auszulösen. – khlr