2011-09-06 75 views
0

我有一个脚本来检查文件是否存在。路径是存在于服务器上的网络共享。通过asp.net站点执行File.Exists时发生的权限问题

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

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

我已经添加了一堆账户中的共享和文件夹两者的权限,但没有什么工作..

是否有显示其用户File.Exists被作为执行的方法吗?

感谢

+0

您可以打开文件服务器上的审计来确定执行文件访问的帐户。 – Gabe

回答

0

与Vista启动Windows服务不允许访问“桌面的东西” - 这是一个安装的驱动器盘符又名网络共享的一个...

,你可以与权限浪费时间等等,但即使你得到它的工作,这是不支持...

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

0

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

但是,您还可以使用Process Monitor来查看用户试图访问服务器上的文件(包括由于权限不足而失败的尝试)。你可以在http://technet.microsoft.com/en-us/sysinternals/bb896645找到它。您可能需要在文件实际存在的远程服务器上运行此操作。

要考虑的另一件事是,当您与您的帐户交互登录时,D:\驱动器可能映射为网络驱动器,但当网站用户“登录”时可能不存在。你最好告诉网站使用UNC路径(\ server \ subfolder ...)而不是D:\路径。

1

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

  1. 更改用户配置的应用程序池到具有访问不仅为运营网站所需要的本地文件的用户,也可以访问网络共享。

  2. 在Web.config中配置模拟。看到这个other SO question here,它有一个从Web.config模拟配置的片段。

一些链接:

0

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

但是,如果您试图通过映射驱动器访问资源,那么获取这些内容不会对您有所帮助,因为映射的驱动器仅存在于登录用户的范围内。

想想这样:你和一个同事共享一台机器,并且映射驱动器D:\到\ serverA \ Shared \ Matt,你的同事不会登录并且有驱动器D:\映射到你的份额。她可以自由映射驱动器D:\到\ serverX \ Secret \ Resources。

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