Ho un paio di progetti ASP.Net MVC e WebAPI. Molti di questi sono aggiornati (MVC 5/WebAPI 2). Ho ricontrollato le mie supposizioni sulla sicurezza poiché sto implementando un filtro globale (per MVC) e un delegante (per WebAPI) per unificare la sicurezza nel sistema.ASP.Net vs MVC vs WebAPI e UseTaskFriendlySynchronizationContext
In tale contesto, ho incontrato un paio di articoli e post (vedi sotto), che dice che bisogna sempre essere impostando UseTaskFriendlySynchronizationContext
a true
(il default è false
). Ciò mi sembra strano, poiché anche in VS2013 utilizzando MVC 5 e WebAPI 2 nuovi modelli di progetto (oltre al modello ASP.Net WebForms) non si imposta affatto l'impostazione di questa app.
La documentazione MSDN su questa impostazione è praticamente inesistente e i post che ho trovato dicono che è necessario per la programmazione asincrona sembra essere nel contesto di WebForms.
Così qui sono le mie domande:
- Questo impostazione si applica a tutto ASP.Net o è specifico per la roba pagina di ciclo di vita in ASP.Net (che non ho usato molto)
- Se è così importante per la programmazione asincrona moderna, perché nessun tutorial o modello lo fa riferimento?
- Utilizzerebbe le richieste di Thread.CurrentPrincipal in una libreria di riferimento che utilizza ConfigureAwait (false) per porre problemi o il flusso del contesto di chiamata logica di ExecutionContext si prenderà cura di me lì? (La mia lettura e test finora indica che lo farà)
Ecco alcuni degli articoli che ho visto per quanto riguarda UseTaskFriendlySynchronizationContext
:
- Set Thread.CurrentPrincipal Asynchronously?
- ASP.NET appSettings Element on MSDN
- What's the meaning of "UseTaskFriendlySynchronizationContext"?
- Understanding the
SynchronizationContext
in ASP.NET by Marcus van Houdt - Why is an "await Task.Yield()" required for Thread.CurrentPrincipal to flow correctly?
Alcuni articoli che realmente mi ha aiutato a ottenere una comprensione di come funziona tutta questa roba che non ha mai menzionato UseTaskFriendlySynchronizationContext
:
- ExecutionContext vs SynchronizationContext by Stephen Toub
- It's All About the SynchronizationContext by Stephen Cleary
Ho inserito il n. 3 nella sua stessa domanda con un breve codice di esempio. Se hai la possibilità di guardarlo, lo apprezzerei davvero! ([Security, Thread.CurrentPrincipal e ConfigureAwait (false)] (http://stackoverflow.com/questions/20479888/security-thread-currentprincipal-and-configureawaitfalse)) –