2009-01-08 104 views
2

我使用模拟用于访问UNC共享上的文件,如下所示。模仿与授权

var ctx = ((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate(); 
    string level = WindowsIdentity.GetCurrent().ImpersonationLevel); 

使用IIS6两个Windows 2003服务器,我得到不同的模拟级别:代表团一个服务器和其他服务器上模拟上。

这会导致无法访问具有“模拟”级别的服务器上的UNC共享的问题。

什么可能导致这种差异?我通过machine.config和IIS设置搜索了应用程序池,网站和虚拟目录 - 但无法找到此问题的原因。

回答

7

这听起来像列出计算机的一个是受Active Directory委托,但另一个不是。如果应用程序池标识为网络服务,请确保计算机帐户在AD中标记为“受委派代理”。

您可能需要让AD管理员强制复制,然后注销/进入工作站以刷新Kerberos票证缓存。

+0

我问一个相关的问题,你可以请检查一下:http://stackoverflow.com/questions/18842970/asp-net-imperonate-in-netframework-2-vs-netframework-4 – 2013-09-17 07:29:12

2

如果用localhost作为Web服务器和它的工作,但你的测试部署时收到你可能会运行到双跃点问题的错误....在此blog post

1

对于那些我们做模仿我们的应用(),我们发现,我们不得不修改本地安全策略应用程序池所有者和帐户添加到以下策略/组:

  1. 充当部分操作系统特权。
  2. 验证后模拟客户端。

在服务器上,运行开始>所有程序>管理工具>本地安全策略,然后导航到本地安全策略>用户权限分配并查找以上两个策略。