我第一次尝试在 IIS 8.5 和 Windows Server 2012 R2 上设置 ASP.NET MVC 3 应用程序。此应用程序使用 Active Directory 和 Windows 身份验证进行权限管理。在 IIS 6 上,我必须授予计算机 ASP.NET(在服务器上)对我的日志文件夹的修改权限,以便它可以写入它。目前,我没有在这个系统上看到 ASP.NET 计算机帐户。我已授予计算机上的 NETWORK SERVICE 帐户修改权限,但应用程序似乎没有写入日志文件。请注意,这是一个本地日志文件;它不是 IIS 的一部分。
我确信解决方案可能只是一些我需要翻转的简单开关,但我已经跟踪了几个小时,但不确定发生了什么。有人有什么想法吗?
我已确保安装了以下服务器角色和功能:
应用程序开发
- .Net 扩展性 3.5
- 项目清单
- 网络扩展性 4.5
- 应用程序初始化
- 服务供应商
- ASP.NET 3.5
- ASP.NET 4.5
- ISAPI 扩展
- .NET Framework 3.5 功能
- .NET Framework 4.5 功能
- ASP.NET 4.5
- WCF 服务
服务器角色 - 安全
- 基本身份验证
- URL 授权
- Windows 身份验证
答案1
IIS 7+ 使用内置的 IIS_IUSRS 组,不同于 IIS6 安装时添加的用户/组。这允许 ACL 在服务器之间传输。
如果您使用带有自定义帐户的 AppPool,请将其添加到 IIS_IUSRS 组。如果您使用默认帐户,请使用 IIS_IUSRS 组对您的文件夹进行 ACL 控制。
答案2
来自官方文档
IIS 7 及更高版本还使配置应用程序池标识和进行所有必要更改的过程变得更加容易。当 IIS 启动工作进程时,它需要创建该进程将使用的令牌。创建此令牌后,IIS 会在运行时自动将 IIS_IUSRS 成员身份添加到工作进程令牌中。以“应用程序池标识”运行的帐户不再需要明确成为 IIS_IUSRS 组的一部分。此更改可帮助您以更少的障碍设置系统,并使您的整体体验更加令人满意。
因此,看起来只需对 IIS_IUSRS 组进行 ACL 就足够了,而无需将运行 AppPool 的实际身份添加到组本身