Loggen und zeigen Sie .NET-Ausnahmen in mehreren Sprachen an

8

Ich protokolliere Fehlermeldungen und .NET-Ausnahmen meiner Anwendung in einer Datenbank und zeige sie auf einer GUI an. Die GUI zeigt Fehlermeldungen in der Sprache des Gebietsschemas des Benutzers an, der die Anwendung ausführt. Um dies zu erreichen, protokolliere ich nur Ressourcennamen von Fehlernachrichten und wandle sie unter Verwendung von Ressourcendateien in aussagekräftige Nachrichten um.

Ich kann mir jedoch nicht vorstellen, wie ich dasselbe für .NET-Standardausnahmemeldungen erreichen kann. Ich kann nur den Nachrichtenstring protokollieren, aber dann ist die Sprache bereits "eingebrannt", so dass ich die Ausnahme nur in dieser einzigen Sprache anzeigen kann.

Gibt es eine Möglichkeit, den Ressourcennamen der .NET-Ausnahme + alle Parameter zu erhalten, die in den Nachrichtenstring eingefügt werden, damit ich diese protokollieren kann?

    
Daniel 29.01.2013, 22:07
quelle

2 Antworten

2

Es gibt keine Ressourcenname für eine Ausnahme, aber es gibt HResult Eigenschaft der Klasse Exception . Die Standard .NET Framework-Ausnahmen haben gültige und eindeutige HResult -Zahlen das Sie dann Ihrem eigenen Ressourcenbezeichner zuordnen können, den Sie dann übersetzen können. Außerdem gibt es noch die Exception.Data -Eigenschaft, die darf zusätzliche Informationen über die Ausnahme enthält.

Oder Sie können die Ausnahmemeldungen manuell analysieren, indem Sie regex oder ähnliches verwenden und diese dann Ihrer Ressourcen-ID zuordnen, aber das ist zu viel Aufwand, denke ich.

    
dbalogh 05.01.2014 14:21
quelle
0

Ich hatte auch dieses Problem und habe viel darüber geforscht. Basierend auf allem, was ich sagen konnte, gab es keine Möglichkeit, die Ausnahme selbst zu lokalisieren, da es sich bei dem, was Sie sehen, nicht um lokalisierte Zeichenfolgen handelt, sondern um tatsächlichen Code. Der Code ist nur in einer Sprache (Englisch) geschrieben und kann nur als solcher angezeigt werden.

    
GrokSrc 29.01.2013 22:21
quelle