Kann Objekt des Typs 'System.Int32' nicht in den Typ 'System.String' umwandeln

8

Ich erhalte ein sporadisches 'Kann Objekt des Typs' System.Int32 'nicht umwandeln, um' System.String 'Exceptions bei .SingleorDefault () im folgenden Code zu schreiben. Es funktioniert 9/10 mal, aber zufällig löst es eine Ausnahme aus. Ich stellte sicher, dass die SettingID, die ich übergebe, keine Nullwerte hat und die Daten in der Tabelle immer für die SettingID existieren, und ich übergebe SettingID immer als Integer.

Irgendwelche Ideen, was mit diesem Code nicht stimmt.

Hier ist die Ausnahme Info:

  

System.InvalidCastException: Das Objekt des Typs 'System.Int32' kann nicht in den Typ 'System.String' umgewandelt werden.
       bei System.Data.SqlClient.SqlBuffer.get_String ()
       bei Read_CPT_Setting (ObjectMaterializer'1)
       bei System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader'2.MoveNext ()
       bei System.Linq.Enumerable.SingleOrDefault [TSource] (IEnumerable'1 Quelle)
       bei System.Linq.Queryable.SingleOrDefault [TSource] (IQueryable'1 Quelle)
       bei CPT.Service.SettingLinqProvider.GetSettingFromDBById (Int32 SettingId)

CODE:

%Vor%

Ich habe den obigen Code aktualisiert, indem ich mich nach jeder Zeile einlogge.

%Vor%

Denken Sie daran: DB enthält alle Zeilen für alle in den folgenden Nachrichten erwähnten settingIDs.

Ergebnisse:

Szenario 1:

Ungewöhnliches Objekt - Keine Daten abgerufen für SettingID = 142176 ENTER - Innerer Kontext - Abfrage mit SettingID = 142176 - Vor SingleOrDefault - - Nach SingleOrDefault - - DBSetting ist nichts

Ungewöhnliches Objekt - MRDD-Lösungen - Keine Datenabfrage für SettingID = 142176 ENTER - Innenkontext - Abfrage mit SettingID = 142176 - Vor SingleOrDefault - - Nach SingleOrDefault - - DBSetting ist nichts

Szenario 2

Ungewöhnliche Ausnahme für SettingID = 138145-- ENTER - Inside Context - Abfrage mit SettingID = 138145 - Vor SingleOrDefault - - Nach SingleOrDefault - - Specified Cast ist nicht gültig.

Ungewöhnliches Objekt - MRDD-Lösungen - Keine Datenabfrage für SettingID = 138145 ENTER - Innenkontext - Abfrage mit SettingID = 138145 - Vor SingleOrDefault - - Nach SingleOrDefault -

Szenario 3

Ungewöhnliche Ausnahme für SettingID = 164638-- ENTER - Inside Context - Abfrage mit SettingID = 164638 - Vor SingleOrDefault - - Index war außerhalb der Grenzen des Arrays.

Ungewöhnliches Objekt - MRDD-Lösungen - Keine Daten für SettingID = 164638 abgerufen ENTER - Inside Context - Abfrage mit SettingID = 164638 - Vor SingleOrDefault -

    
ravi 20.03.2012, 20:45
quelle

4 Antworten

3

Ich habe mit der Unterstützung von Micorsoft nachgedacht, und wir haben debugdiag Trace- und Analyse-Dump-Dateien aktiviert, konnten aber nichts erreichen.

Nach vielen Analysen habe ich festgestellt, dass 3/4 Server keine aktuellen Framework-Updates haben, weshalb die Server-Admins die Rechner mit Reliability Update 1 für .Net Framework 4 aktualisiert haben und anscheinend gelöst sind Das Thema. Es wurden keine Codeänderungen vorgenommen. Seit der Aktualisierung sind zwei Wochen vergangen und in diesem Codeblock wurde keine einzige Ausnahme angezeigt.

Ich habe nur einen Monat dafür verschwendet. Verdammt. Manchmal ist es einfach nicht der Code.

    
ravi 14.05.2012 13:50
quelle
1

Anstatt ToString() zu verwenden, müssen Sie Convert.ToString()

verwenden

Ich hoffe, es wird Ihr Problem lösen.

    
Arul Kumar 10.05.2012 07:35
quelle
0

Sie sollten das überprüfen

%Vor%

gibt nicht mehr als ein Objekt zurück. Vielleicht sollte es nie sein, aber das könnte das Problem sein.

    
Steve Mallory 06.04.2012 17:56
quelle
0

Verwenden Sie Single statt Singleordefault?

So haben wir kürzlich eine ähnliche Situation in der Arbeit gelöst.

    
Chris 10.05.2012 08:07
quelle

Tags und Links