haben wir mit Asynchron/erwarten in asp.net Anwendung gestartet, jetzt sind wir die berühmte Ausnahme in unserer Produktion beendetAsync/erwarten wirft NullReferenceException Wie können wir diagnostizieren, wo wir es vermasselt haben?
Eine nicht behandelte Ausnahme aufgetreten ist, und der Prozess wurde immer.
Anwendungs-ID:/LM/W3SVC/376/ROOT
Prozess-ID: 3796
Ausnahme: System.NullReferenceException
Nachricht: Der Objektverweis auf eine Instanz eines Objekts nicht gesetzt.
Stacktrace: at System.Web.ThreadContext.AssociateWithCurrentThread (Boolean setImpersonationContext) bei System.Web.HttpApplication.OnThreadEnterPrivate (Boolean setImpersonationContext) bei System.Web.LegacyAspNetSynchronizationContext.CallCallbackPossiblyUnderLock (SendOrPostCallback Rückruf, Objektzustand at) System.Web.LegacyAspNetSynchronizationContext.CallCallback (SendOrPostCallback Rückruf, Objektzustand) bei System.Threading.Tasks.AwaitTaskContinuation.RunCallback (Context Rückruf, Objektzustand, Aufgabe & currentTa sk) --- Ende der Stack-Trace aus früheren Stelle, wo Ausnahme ausgelöst wurde --- bei System.Threading.Tasks.AwaitTaskContinuation.b__1 (Object s) bei System.Threading.ExecutionContext.RunInternal (ExecutionContext ExecutionContext, Contextcallback, Objektzustand, Boolean preserveSyncCtx) bei System.Threading.ExecutionContext.Run (ExecutionContext ExecutionContext, Contextcallback, Objektzustand, Boolean preserveSyncCtx) bei System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem () bei System.Threading.ThreadPoolWorkQueue.Dispatch()
Gibt es eine Möglichkeit, mehr Informationen über den Code/die Aufgabe zu erhalten, die das Problem verursacht?
Zweite Frage: wir haben versucht, die Ausnahme vor Ort in einer einfachen Test webform Anwendung
protected void Page_Load(object sender, EventArgs e)
{
LogMessageToFile("before_task");
var t = Test();
tasks.Add(t);
}
async Task Test()
{
await Task.Run(() =>
{
LogMessageToFile("inside_task");
Thread.Sleep(1000);
}
);
this.Title = "test";
LogMessageToFile("after_task");
// throw new Exception("");
}
zu reproduzieren, aber wir nie die Ausnahme in unserer Testseite bekommen scheint, dass der Code nach dem in Testfunktion erwartet nie aufgerufen und Der Aufgabenstatus lautet WaitingForActivation. Warum erhalten wir in diesem Code keine Ausnahme?
versuchen catch block araound warten? – Legends
'this.Title =" test ";' kann null sein, wenn die Seite verschwunden ist und Sie nicht darauf achten, ... bevor die Seite gelöscht wird. – Aristos