У меня есть несколько проектов ASP.Net MVC и WebAPI. Большинство из них обновлены (MVC 5/WebAPI 2). Я дважды проверял свои предположения о безопасности, так как я реализую глобальный фильтр (для MVC) и обработчик делегирования (для WebAPI) для унификации безопасности в системе.
В этом контексте я столкнулся с несколькими статьями и сообщениями (см. ниже), в которых говорится, что вы всегда должны устанавливать UseTaskFriendlySynchronizationContext
на true
(по умолчанию это false
). Это кажется мне странным, так как даже в VS2013 с использованием новых шаблонов проектов MVC 5 и WebAPI 2 (а также шаблона ASP.Net WebForms) установка этого приложения не устанавливается вообще.
Документация MSDN по этому параметру практически не существует, и сообщения, которые я нашел, которые говорят, что это требуется для асинхронного программирования, похоже, относятся к контексту WebForms.
Итак, вот мои вопросы:
- Этот параметр применим ко всему ASP.Net или относится к материалу жизненного цикла страницы в ASP.Net(который я не использовал много).
- Если это так важно для современного асинхронного программирования, почему бы ему не использовать какие-либо руководства или шаблоны?
- Будет ли использовать Thread.CurrentPrincipal претензии в справочной библиотеке, которая использует ConfigureAwait (false), создавать какие-либо проблемы или будет ли поток логического контекста вызова ExecutionContext позаботиться обо мне? (мое чтение и тестирование пока показывают, что оно будет)
Вот некоторые из статей, которые я видел относительно UseTaskFriendlySynchronizationContext
:
- Установить Thread.CurrentPrincipal асинхронно?
- Элемент ASP.NET appSettings в MSDN
- В чем смысл" UseTaskFriendlySynchronizationContext "?
- Понимание
SynchronizationContext
в ASP.NET от Marcus van Houdt - Почему "ждут" Task.Yield() " требуется для правильной работы Thread.CurrentPrincipal?
Некоторые статьи, которые действительно помогли мне понять, как все это работает, никогда не упоминаются UseTaskFriendlySynchronizationContext
: