Подтвердить что ты не робот

ASP.Net vs MVC vs WebAPI и UseTaskFriendlySynchronizationContext

У меня есть несколько проектов 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:

Некоторые статьи, которые действительно помогли мне понять, как все это работает, никогда не упоминаются UseTaskFriendlySynchronizationContext:

4b9b3361

Ответ 1

Отсутствует ключевое слово в этом сообщении в блоге. В частности, вам нужно либо установить UseTaskFriendlySynchronizationContext, либо установить targetFramework на 4.5. Создание нового проекта устанавливает targetFramework в 4.5, поэтому вы получите правильное поведение (UseTaskFriendlySynchronizationContext неявно установлено на true).

Чтобы ответить на ваши конкретные вопросы:

  • Этот параметр влияет на обработку запросов ASP.NET для всех видов запросов, а не только для WebForms.
  • Большинство обучающих программ async предполагают сценарий приложения GUI.
  • Я не уверен; Я думаю, что это будет лучше, как отдельный вопрос. Я чувствую, что вы не можете зависеть от Thread.CurrentPrincipal после выхода из контекста ASP.NET.