情况:
- 在IIS服务器管理器中创建的测试网站
- 基本设置/连接为:应用程序用户
- 身份验证/匿名身份验证/编辑:应用程序池身份
- 物理路径具有“IIS AppPool\DefaultAppPool”读取和执行、列出文件夹内容和读取权限(加上具有继承的完全控制权的管理员/系统)
- 包含单个文件 index.html(以及使用上述设置生成的 web.config)
错误:
- HTTP 错误 500.19-内部服务器错误
- 配置错误由于权限不足,无法读取配置文件
问题:
- 我如何使其与应用程序身份一起工作?(使用 iusr 在匿名身份验证下和物理文件夹上的 rx 权限下使其工作)
- 我做错了吗?或者这确实是最佳做法,正如我发现的大多数资源所建议的那样?
我也非常感激有什么好的教程关于 IIS 7.5 的“基础知识” - 我无法在 learn.iis.net 和其他几个网站上找到这个特定问题的答案,并且通常发现那里可用的资源非常零散。
答案1
如果您使用常见的 IIS7.5 开箱即用默认设置创建了网站,那么您的“测试网站”也将为其创建一个应用程序池。
站点将按“原样”执行请求的默认身份ApplicationPoolIdentity
是ApplicationPoolIdentity
一个特殊的合成帐户,它是动态创建的,代表您站点的应用程序池的身份。
您陈述:
物理路径有“IIS AppPool\DefaultAppPool”读取并执行
这可以解释为什么您会收到500.19
错误。除非您将网站分配给“DefaultAppPool”应用程序池,否则此权限不会发挥任何作用。
您需要ApplicationPoolIdentity
为站点分配(至少)读取和执行权限。为此,请从命令行执行以下操作:
icacls <path_to_site> /grant "IIS APPPOOL\<app_pool_name>"(CI)(OI)(M)
<app_pool_name>
为您的测试站点创建的应用程序池的名称在哪里。您可以通过执行以下命令找到其名称:
appcmd list app /site.name:"<your site name>"
这将返回类似的内容并显示您网站的应用程序池的名称(以其ApplicationPoolIdentity
命名:
APP "test site/" (applicationPool:test site)