2015-07-17 17 views
6

Ist SynchronizationContext null in einer ASP.NET Core 1.0-Website? Dieser Code löst eine Ausnahme auf meinem System:ASP.NET Core 1.0 SynchronizationContext

 app.Use(async (context, next) => 
     { 
      var sc = System.Threading.SynchronizationContext.Current; 
      if (sc == null) 
      { 
       throw new Exception("SynchronizationContext is null"); 
      } 
+0

möglich Duplikat von [SynchronizationContext.Current ist null, wenn es auf verschiedenen App-Domains ausgeführt wird] (http://stackoverflow.com/questions/20521286/synchronizationcontext-current-is-null-when-run-on-different-) app-domains) – demonplus

+0

Es ist kein Duplikat! – tugberk

Antwort

12

Es in ASP.NET 5 weg ist, da Sie nicht die Funktionalität benötigen. Sein ganzer Zweck war es, HttpContext.Current fließen, die weg ist.

Ich denke, es war auch etwas mit der aktuellen Kultur, aber ich bin mir nicht sicher, wie das jetzt gehandhabt wird.

+1

Um die aktuelle Kultur "async-freundlich" zu machen, gibt es tatsächlich zwei Strategien: Bei CoreCLR und .NET 4.6 wird ein spezielles Flag "Switch.System.Globalization.NoAsyncCurrentCulture" verwendet: Es wurde zuvor von "Bootstrapper" von dnx auf false gesetzt 'aber es wird jetzt direkt in mscorlib behandelt: https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/AppContext/AppContextDefaultValues.Defaults.cs. Unter .NET <4.5.2 wird stattdessen ein spezieller 'HostExecutionContextManager' verwendet: https://github.com/aspnet/dnx/blob/dev/src/dnx.clr.managed/DnxHostExecutionContextManager.cs – Pinpoint

+0

Das wäre wirklich cool um die Kultur auch durch einen Accessor fließen zu lassen (genau wie HttpContext). – tugberk

+0

Ich war unter der fehlerhaften Annahme, dass ASP.NET 5 eine Ein-Thread-Ausführung ähnlich Knoten hat. Also bedeutet dies, dass Kontexte durch separate Threads behandelt werden können und ein Warten auf einen anderen Thread führt. –

Verwandte Themen