ASP.NET模拟远程文件访问

ASP.NET模拟远程文件访问,asp.net,file,share,Asp.net,File,Share,我有一个ASP.NET web应用程序正在尝试读取与模拟用户的远程共享。具体来说,我正在尝试使用以下代码读取远程共享上的目录 DirectoryInfo rootDir = new DirectoryInfo(strPath); foreach (DirectoryInfo dir in rootDir.EnumerateDirectories()) { TreeNode folderNode = new TreeNode(dir.Name, dir.FullName); fo

我有一个ASP.NET web应用程序正在尝试读取与模拟用户的远程共享。具体来说,我正在尝试使用以下代码读取远程共享上的目录

DirectoryInfo rootDir = new DirectoryInfo(strPath);

foreach (DirectoryInfo dir in rootDir.EnumerateDirectories())
{
    TreeNode folderNode = new TreeNode(dir.Name, dir.FullName);
    folderNode.PopulateOnDemand = true;
    folderNode.ImageUrl = "~/img/Folder.png";
    nodeList.Add(folderNode);
}  
当网页运行此代码时,我收到以下错误消息

对路径“\remoteserver\remoteshare\”的访问被拒绝

这是我的web.config

<authentication mode="Windows"/>
<identity impersonate="true" />
<authorization>
  <deny users="?"/>
</authorization>
当我登录到该网站时,我知道模拟正在工作,因为我可以执行HttpContext.Current.User.Identity.Name并查看我的用户名。我正在IIS 7.5下的域上运行此应用程序。我还知道这不可能是Kerberos双跳问题,因为我可以从web服务器连接到远程SQL server,并通过just fine传递Windows身份验证凭据,并从查询返回结果

我正在web服务器上使用来确定哪些凭据正在传递到远程共享。当我看到显示拒绝访问的捕获时,它给出了以下描述

所需访问:读取数据/列表目录、同步、处置:打开、选项:目录、同步IO非警报、打开备份、属性:n/a、共享模式:读取、写入、删除、分配大小:n/a、模拟:域\用户名

其中DOMAIN\username是来自web服务器的模拟用户名

Process Monitor还显示NT AUTHORITY\NETWORK SERVICE是web服务器上发出请求的用户,这使我认为web服务器实际上没有传递模拟用户来读取远程文件共享。这就好像远程文件共享访问存在双跳问题

我还将web服务器配置为信任此计算机,以便仅将其委托给任何Kerberos服务。同样,如果我可以从web服务器访问远程SQL server,这不会是一个双跳问题,或者可以吗?任何帮助或指点都将不胜感激,我花了2天时间寻找可能的解决方案,但没有任何效果