Bei der asynchronen Protokollierung wird eine NullReferenceException ausgelöst

9

Ich versuche, einige Informationen asynchron in SQL Server innerhalb einer MVC 4-Controller-Aktion zu protokollieren, die .NET 4.0 mithilfe von AsyncTargetingPack abzielt. Ich würde direkt zu .NET 4.5 springen, aber meine App lebt in Azure und wir warten immer noch auf das Update ...

Dieser Code funktioniert wie erwartet (eine Zeile wird ohne Ausnahmen in meine Datenbank geschrieben):

%Vor%

Und dieser Code löst eine NullReferenceException aus:

%Vor%

NullReferenceException: "Objektverweis nicht auf eine Instanz eines Objekts festgelegt."

%Vor%

Ich habe keinen Einblick in die Ausnahme, da es sich um externen Code handelt. Ich verstehe nicht, warum der zweite Codeblock fehlschlägt. Dies ist der Code, den ich ursprünglich geschrieben habe.

Was mache ich falsch?

    
David Peden 19.10.2012, 07:06
quelle

3 Antworten

5

Ich hatte gerade ein sehr ähnliches Problem (NullReference von AssociateWithCurrentThread bei Verwendung einer Protokollierungsaufgabe).

Das Problem, das ich hatte, war, dass die ursprüngliche Aktion den Abschluss der Protokollierungsaufgabe nicht abwartete. Wenn das Protokoll beendet ist und versucht, dem ursprünglichen Thread wieder beizutreten, wird eine nullReference ausgelöst, weil der ursprüngliche Thread beendet wurde.

Dies wurde für mich gelöst, indem sichergestellt wurde, dass der Anforderungscontroller auf die Protokollierungsfunktion gewartet hat.

    
kcar 17.05.2013 18:52
quelle
0

Dataflow funktioniert nur mit .NET 4.5. Die Tatsache, dass Sie es unter .NET 4.0 ausführen, wird nicht unterstützt und ist wahrscheinlich der Grund dafür, dass Sie fehlerhafte Ausnahmen sehen.

    
Andrew Arnott 31.12.2012 17:32
quelle
-2

Ich hatte dieses Problem mit .net4.5, als mein Web-Service einen anderen WCF-Dienst asynchron aufruft. Ich habe einfach ein kurzes zeitgesteuertes Wait() angehängt, da mir die Antwort (Telemetrie-Ereignis) egal war.

%Vor%     
ohmusama 06.06.2014 23:37
quelle