WindowsIdentity winId =(WindowsIdentity)HttpContext.Current.User.Identity;如何使这个演员工作;目前它失败了

时间:2009-06-11 20:24:17

标签: impersonation

我基本上试图通过模拟登录用户从我的Web应用程序访问网络共享资源。我按照这个例子[http://msdn.microsoft.com/en-us/library/ms998351.aspx#paght000023_impersonatingbyusingwindowsidentity],这里作者没有提到演员失败。当我做了那个演员表时,我得到了无法制作演员表的运行时异常。以前有人经历过这类问题吗?

非常感谢指导或建议!

谢谢

  WindowsIdentity winId = (WindowsIdentity)HttpContext.Current.User.Identity;
WindowsImpersonationContext ctx = null;
try
{
  // Start impersonating
  ctx = winId.Impersonate();
  // Now impersonating
  // Access resources using the identity of the authenticated user
}
// Prevent exceptions from propagating
catch
{
}
finally
{
  // Revert impersonation
  if (ctx != null)
  ctx.Undo();
}
// Back to running under the default ASP.NET process identity

2 个答案:

答案 0 :(得分:1)

你的Identity真的是什么?也许它是一个通用的身份或其他身份 - 而不是你认为的Windows身份:

string typeOfIdentity = HttpContext.Current.User.Identity.GetType().FullName;

结果是什么?这可能会为您提供更多关于您在这里处理的内容的信息。

马克

答案 1 :(得分:0)

我不确定你是怎么做模仿的,所以很难 告诉你究竟该怎么做,但你的网络应用程序中的用户对象是 等于System.Security.Principal.IPrincipal对象而不是 WindowsPrincipal对象。

同样,User.Identity是一个IIdentity而不是WindowsIdenity对象。

你能发布更多关于你想要做的事情吗?