Can I turn off impersonation just in a couple instances

人盡茶涼 提交于 2019-11-26 22:33:52

Make sure the Application Pool do have the proper rights that you need.

Then, when you want to revert to the application pool identity... run the following:

private WindowsImpersonationContext context = null;
public void RevertToAppPool()
{
    try
    {
        if (!WindowsIdentity.GetCurrent().IsSystem)
        {
            context = WindowsIdentity.Impersonate(System.IntPtr.Zero);
        }
    }
    catch { }
}
public void UndoImpersonation()
{
    try
    {
        if (context != null)
        {
            context.Undo();
        }
    }
    catch { }
}

I am not sure if this is the preferred approach but when I wanted to do this I new'd up an instance of a WindowsIdentity and called the Impersonate method. This allows subsequent code to impersonate a different Windows user. It returns a WindowsImpersonationContext that has an Undo method which reverts the impersonation context back again.

You could turn off authentication for the page and then manually impersonate the authenticated user during the remainder of your code.

http://support.microsoft.com/kb/306158

This has a reference to that last part, but basically you impersonate User.Identity

This will mean you will have to impersonate at the beginning of any call to the page, turn it off when you need it off, then turn it back on when you are done, but it should be a workable solution.

I just ended up giving the folders write permissions to "Authenticated Users"

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!