Qual é a diferença entre RunWithElevatedPriviledges e HostingEnvironment.Impersonate()?
-
10-12-2019 - |
Pergunta
Qual é a diferença entre RunWithElevatedPriviledges e HostingEnvironment.Impersonate()?
Ambos são usados para executar código com privilégios mais elevados.
Solução
Hosting.HostingEnvironment.Impersonate
é o ASP.NET equivalente a SPSecurity.RunWithElevatedPrivileges
.
SPSecurity.RunWithElevatedPrivileges
não pode funcionar no contexto do ASP.NET, pois chama APIs do SharePoint.
Eu tenho um aplicativo da web asp.net que deve executar código no contexto do usuário atual (por meio da representação de identidade, pois precisa chamar vários recursos).Existem alguns blocos de código, como gravar exceções no log de eventos que devem ser executados como a conta do pool de aplicativos.
No SharePoint (que tem o asp.net configurado de maneira muito semelhante ao meu aplicativo da web), existe o SPSecurity.RunWithElevatedPrivileges.Isso garante que um bloco de código seja executado como a conta do pool de aplicativos.O equivalente em asp.net é o seguinte: -
using (System.Web.Hosting.HostingEnvironment.Impersonate())
{
}