1

我有一个应用程序System.UnauthorizedAccessException在尝试从文件系统读取时出错。

我查看了应用程序池,发现它正在使用Network Service它的身份。IIS 应用程序允许使用现有帐户进行匿名身份验证,我们称之为IUSR-MYSERVER。它也已Integrated Windows authentication启用。

如果我转到有问题的文件夹并Everyone使用读取+执行权限添加,错误就会消失。但是,如果我添加IUSR-MYSERVERNETWORK SERVICE具有相同的权限,我仍然会得到相同的错误。

当我查看事件日志中的错误条目时,它的用户为N/A.

我的应用程序试图以什么用户身份访问文件系统?我认为只使用会很糟糕Everyone

4

1 回答 1

0

如果 Web 应用程序使用模拟,则当前登录的用户(或匿名用户的 IUSR)将访问该文件 - 使用集成 Windows 身份验证和 IE 将导致单点登录,因此打开浏览器的用户将访问该文件.

如果不使用模拟,则使用应用程序池标识。

要在代码中确定当前登录的用户,请使用System.Threading.Thread.CurrentPrincipal.Identity.Name- 但请注意,这并不代表正在访问文件的帐户。

要确定执行代码的实际身份,请使用System.Security.Principal.WindowsIdentity.GetCurrent().Name.

于 2012-11-05T09:43:45.620 回答