Да, вы можете. ApiController
имеет свойство Request
типа System.Net.Http.HttpRequestMessage
; он содержит информацию о текущем запросе естественным образом (он также имеет установщик для целей модульного тестирования). HttpRequestMessage
имеет Properties
словарь; вы найдете значение ключа MS_UserPrincipal
, в котором содержится ваш IPrincipal
объект.
При изучении этого ответа я наткнулся на System.Web.Http.HttpRequestMessageExtensions
, у которого есть метод расширения GetUserPrincipal(this HttpRequestMessage request)
, который обращается к этому значению словаря; Я не видел этот метод расширения раньше и получал прямой доступ к Request.Properties["MS_UserPrincipal"]
, но это может быть лучшим методом (менее зависимым от команды ASP.NET Web Api, сохраняющей имя ключа неизменным ...)