IIS目录下文件共享后System.IO.File.Exists返回false

时间:2022-05-31 07:04:14

场景:在iis目录下,因为特殊需要共享一个文件夹,给到其他的技术人员访问,突然发现小小的操作,搞“大”了,使用

string path = Server.MapPath("~/file/test.txt");

Response.Write(System.IO.File.Exists(path));

返回的是false,路径是正确的,文件是存在的,为什么会返回false呢?

分析:经过两个臭皮匠的分析,发现问题可能是在权限上

左边是共享后的文件夹,右边是共享文件夹的父文件夹,发现父文件夹多了一个Authenticated Users角色,

IIS目录下文件共享后System.IO.File.Exists返回false

文件夹设置为共享后,会去掉从父项继承的配置

IIS目录下文件共享后System.IO.File.Exists返回false

Authenticated Users:Windows系统中所有使用用户名、密码登录并通过身份验证的账户,不包括来宾账户Guest,即使来宾帐户有密码。

IIS_IUSRS用户组属于authenticated users,而authenticated users属于Users组。所以添加IIS_IUSRS用户组、IUSR用户也是可以解决这个问题的。

IIS目录下文件共享后System.IO.File.Exists返回false

解决方法:为共享文件夹加上“Authenticated Users”的权限,或者选择从父项继承权限。

参考资料:

http://blog.csdn.net/xys_777/article/details/6602826

http://baike.baidu.com/link?url=L6zlbp6luDJiGPpGfLUiEU2gCUSY38z-BOb1txtx-ssopf2mb7z1wP3AMNO7_9zPKz5hDus7FJGqMn9SMOybXK