Под ASP у меня была служебная DLL, которую я мог использовать для вызова функции RevertToSelf () Win32 (находится в advapi32.dll), чтобы заставить ASP работать под идентификатором пула приложений.
Конечно, когда-то нет возврата к исходной идентичности, которую использовал поток, но на самом деле это не проблема. Как только текущий запрос завершится, следующий запрос будет выполнен снова под именем пользователя (или анонимными пользователями).
Возможно, вы могли бы сделать то же самое с PInvoke в ASP.NET, но я не знаю, как это может повлиять на фреймворк. Я уверен, что это будет продолжаться только для текущего запроса. Я не думаю, что есть какой-либо стандартный .NET API для этого.