2010-11-28 6 views
0

Ich bekomme einen -2147024891 Fehlercode in einer MessageQueueException; vom Typ MessageQueueErrorCode. Wie kann ich herausfinden, welche Fehler hier aufgetreten sind?Wie erhalten Sie Zeichenfolgendarstellung einer Bitfeldaufzählung in C# (MessageQueueErrorCode)?

Hinweis: Ich habe Werte dieser Enumeration mit System.Enum.GetValues ​​extrahiert und dann eine LINQ-Abfrage verwendet, um herauszufinden, welche in diesen Fehler passen, indem Sie & (und); dann bekommt es seinen Namen von System.Enum.GetName und verbindet sie mit einem ',' Trennzeichen ... trotzdem: gescheitert!

Antwort

2

Der Fehlercode ist 0x80070005. Die 7 ist der "Einrichtungscode", es ist Windows. Mit anderen Worten, Sie haben keinen Fehler in der Nachrichtenwarteschlange erhalten, Sie haben einen Windows-Fehler erhalten. Fehlercode 5 ist "Zugriff verweigert".

Etwas falsch mit dem Benutzerkonto, in der Regel nicht genügend Berechtigungen.

+0

Danke Ihnen; das sollte es sein. Ich werde prüfen, ob es so ist. –

2

Sie können Ihre Fehlercode an eine Enumeration und Verwendung ToString() Stimmen:

string error = ((MessageQueueErrorCode)ex.ErrorCode).ToString(); 

, die den Namen des ENUM-Wert zurückgeben sollte.

Eigentlich bin ich mir nicht sicher, was passiert, wenn die Enum diesen spezifischen Wert nicht enthält (vielleicht wird eine InvalidCastException ausgelöst), aber Sie können es selbst ausprobieren.

+0

Sie können ein 'int' ohne eine' InvalidCastException' in das Enum schreiben, auch wenn das Enum nicht das 'int' enthält. – digEmAll

Verwandte Themen