C# 执行文件时出现权限问题。通过asp.net网站存在

C# 执行文件时出现权限问题。通过asp.net网站存在,c#,.net,asp.net,C#,.net,Asp.net,我有一个脚本来检查文件是否存在。路径是服务器上存在的网络共享 即目录为D:\Mainfolder\Subfolder\file.txt 网络共享为\Server\Subfolder\file.txt 该文件存在,但从我的asp.net网站上看,它说它不存在。。我假设这是一个权限问题,因为如果文件位于不同的文件夹中,它会起作用 我已经在共享和文件夹的权限中添加了一堆帐户,但没有任何功能 是否有方法显示文件.Exists作为哪个用户执行 谢谢从Vista开始,Windows服务不允许访问“桌面设备”

我有一个脚本来检查文件是否存在。路径是服务器上存在的网络共享

即目录为D:\Mainfolder\Subfolder\file.txt 网络共享为\Server\Subfolder\file.txt

该文件存在,但从我的asp.net网站上看,它说它不存在。。我假设这是一个权限问题,因为如果文件位于不同的文件夹中,它会起作用

我已经在共享和文件夹的权限中添加了一堆帐户,但没有任何功能

是否有方法显示文件.Exists作为哪个用户执行


谢谢

从Vista开始,Windows服务不允许访问“桌面设备”-其中之一是挂载的驱动器号,也称为网络共享

你可以乱搞权限等,但即使你让它工作,这是不受支持的


确切的目标是什么?也许还有其他方法…

它可能是应用程序池运行的用户。您可以在IIS管理器中看到应用程序池的列表

但是,您也可以使用Process Monitor查看哪些用户试图访问服务器上的文件(包括由于权限不足而失败的尝试)。你可以在。您可能需要在文件实际存在的远程服务器上运行此操作


另一个要考虑的是,当你与你的帐户交互登录时,D:\Read可能被映射为网络驱动器,当网站用户登录时,它可能不存在。最好告诉网站使用UNC路径(\server\subfolder…)而不是d:\path。

访问文件的用户是在ASP.NET站点或虚拟目录的应用程序池中配置的用户。默认情况下,此用户将无法访问许多本地文件夹/文件,只允许一个人共享网络。您有两个选择:

  • 将为应用程序池配置的用户更改为不仅可以访问运行站点所需的本地文件,还可以访问网络共享的用户

  • 在Web.config中配置模拟。请参阅这篇文章,其中包含Web.config中用于模拟的配置片段

  • 一些链接:


    正如其他人所提到的,您的应用程序可能正在应用程序池标识下运行。除非已明确更改,否则此帐户将不会显示在要配置的帐户列表中

    但是,如果您试图通过映射驱动器访问资源,那么将其整理出来对您没有帮助,因为映射驱动器仅存在于登录用户的作用域内

    可以这样想:您和一位同事共享一台机器,您将驱动器D:\映射到\serverA\Shared\Matt,您的同事将不会登录并将驱动器D:\映射到您的共享。她可以自由地将驱动器D:\映射到\serverX\Secret\Resources


    首先确保您使用的是UNC路径,然后处理权限问题。

    您可以打开文件服务器上的审核,以确定哪个帐户正在执行文件访问。