我有一个在整个使用模拟的应用程序。 但是,当用户登录作为管理员,几个操作要求他们写入到服务器本身。 现在,如果这些用户没有实际的服务器上的权限(有些没有),它不会让他们写。
我想要做的就是关闭模拟的只是一对夫妇的命令。
有没有办法做这样的事情?
using(HostingEnvironment.Impersonate.Off())
//I know this isn't a command, but you get the idea?
谢谢。
我有一个在整个使用模拟的应用程序。 但是,当用户登录作为管理员,几个操作要求他们写入到服务器本身。 现在,如果这些用户没有实际的服务器上的权限(有些没有),它不会让他们写。
我想要做的就是关闭模拟的只是一对夫妇的命令。
有没有办法做这样的事情?
using(HostingEnvironment.Impersonate.Off())
//I know this isn't a command, but you get the idea?
谢谢。
确保应用程序池确实有你需要的正当权益。
然后,当你想恢复到应用程序池标识...运行以下命令:
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 { }
}
我不知道这是首选的方法,但是当我想做到这一点我new'd了一个实例的WindowsIdentity并称为模拟方法。 这使得随后的代码来模拟不同的Windows用户。 它返回一个WindowsImpersonationContext一个具有撤消方法,再次恢复了模拟环境。
你可以关闭验证的页面,然后在你的代码的剩余时间内手动冒充身份验证的用户。
http://support.microsoft.com/kb/306158
这有可能是最后一个参考,但基本上你冒充User.Identity
这将意味着你将不得不在页面的任何呼叫开始模仿,把它关掉,当你需要它,然后重新打开它你完成的时候,但它应该是一个可行的解决方案。
我刚刚结束了给文件夹的写权限,以“身份验证的用户”