环境是Windows 2008 R2,ASP.NET 4,IIS 7。我有一个场景,用户向服务器提交一些设置,服务器根据设置生成文件(位图或SVG文件)并保存文件到一个文件夹中。通过写入位图生成图像,使用 File.WriteAllText 生成 SVG 文件。然后将用户重定向到该文件。
我没想到的是,服务器能够在我不授予文件夹写权限的情况下创建文件。我检查的事情:
- w3wp.exe 在 IIS AppPool/MyUser 下运行,正确的应用程序池标识
- IIS AppPool/MyUser 具有对该文件夹的读取权限——如果我转到 Security/Advanced/Effective Persmissions 并检查 MyUser 对该文件夹的权限,我将获得 List Folder/Read Data、Read attributes、Read extended attributes 和 Read permissions
- 如果我在写入文件之前抓取 System.Security.Principal.WindowsIdentity.GetCurrent().Name,它会正确设置为应用程序池标识。
- 创建的文件的所有者是 MyUser
我不明白的是为什么 ASP.NET 可以在应用程序池具有只读访问权限的文件夹中创建文件?