C# 如何模拟已登录的用户并访问unc文件夹?
我在模拟登录用户然后访问unc文件时遇到问题。我已尝试使用以下示例代码:C# 如何模拟已登录的用户并访问unc文件夹?,c#,impersonation,unc,C#,Impersonation,Unc,我在模拟登录用户然后访问unc文件时遇到问题。我已尝试使用以下示例代码: using System.Security.Principal; ... // Obtain the authenticated user's Identity WindowsIdentity winId = (WindowsIdentity)HttpContext.Current.User.Identity; WindowsImpersonationContext ctx = null; try { // S
using System.Security.Principal;
...
// Obtain the authenticated user's Identity
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
如果我尝试在本地访问一个文件,其中的注释表示使用经过身份验证的用户的身份访问资源,那么它将完全按照它应该的方式工作。但是,如果我尝试使用诸如\\ServerName\Share\FileName.txt之类的UNC对某个文件服务器上的文件执行相同的操作,则模拟帐户是否具有足够的权限并不重要。应用程序引发异常,表示ASP.NET帐户没有足够的权限
我还尝试使用非托管代码来执行模拟,然后它就可以工作了!本地文件或UNC,不要紧,就像一个魅力
问题是,你必须提供密码,因为这是登录用户的权利,我想检查,我不能提供
有人知道为什么应用程序会这样吗?这是我需要设置的一些配置设置吗
Web应用程序以特定的方式运行
身份,此身份基于
本地计算机上的用户帐户或
域名
应用程序使用此标识
当它访问磁盘上的资源或
服务
如果该帐户无权
资源,web应用程序将
无法使用该资源
模拟是网络的关键所在
应用程序假定一个不同的
默认设置中的标识
可以将模拟配置为
用于上的web应用程序
通过添加标记启动
到web.config文件。模仿
也可以在中动态实现
代码,以便可以打开和
根据需要关闭
从
因此,请检查web.config和IIS配置,并确保您模拟的是正确的用户
Web应用程序以特定的方式运行
身份,此身份基于
本地计算机上的用户帐户或
域名
应用程序使用此标识
当它访问磁盘上的资源或
服务
如果该帐户无权
资源,web应用程序将
无法使用该资源
模拟是网络的关键所在
应用程序假定一个不同的
默认设置中的标识
可以将模拟配置为
用于上的web应用程序
通过添加标记启动
到web.config文件。模仿
也可以在中动态实现
代码,以便可以打开和
根据需要关闭
从
因此,请检查您的web.config和IIS配置,并确保您模拟的是正确的用户。因此,为了防止异常传播,您甚至不会捕获并记录它们!?酷!您正在模拟ASP.NET帐户。。。不是当前用户帐户。您的身份验证模式是什么?您在web.config上有特定的模拟版本?@Davide:我想这是一个示例代码。。。检查这里:,这里和这里是源代码:所以为了防止异常传播,您甚至不捕获并记录它们!?酷!您正在模拟ASP.NET帐户。。。不是当前用户帐户。您的身份验证模式是什么?您在web.config上有特定的模拟版本?@Davide:我想这是一个示例代码。。。检查此处:,此处和此处是源: