我有一个非常简单的站点,其中只有 Windows Server 2008 SP2 上 IIS 7 中的静态文件。
当我尝试访问任何静态文件时,我收到 500 错误。如果我将 html 文件重命名为具有 aspx 扩展名,则它可以正常工作。
当使用内置身份作为应用程序池时,网站也能正常工作。当我切换到使用自定义帐户作为应用程序池时,就会出现问题。我尝试使用本地和域帐户来运行应用程序池。
我已将网站目录和文件的完全控制权授予这些帐户。
打开跟踪会显示以下错误消息:
ModuleName:IIS Web Core
通知:2
HttpStatus:500
HttpReason:内部服务器错误
HttpSubStatus:0
ErrorCode:2147943746
ConfigExceptionInfo
通知:AUTHENTICATE_REQUEST
ErrorCode:未提供所需的模拟级别,或者提供的模拟级别无效。(0x80070542)
我用谷歌搜索错误代码,但没有任何结果。
答案1
问题解决:本地安全策略中的“身份验证后模拟客户端”缺少 IIS_IUSRS 组。
答案2
答案3
答案4
除了布朗尼的回答(这是正确的,您必须将此权限授予应用程序池帐户);如果在您使用 WCF 客户端调用它时 IIS 向您发送此错误(+ 在 IIS 中启用了 Windows 身份验证),则可能是因为给予 IIS 的 NTLM 令牌的标志不允许它模拟调用者。
修改您的客户端的配置(默认):
<behavior name="NewBehavior">
<clientCredentials>
<windows allowedImpersonationLevel="Identification" />
</clientCredentials>
</behavior>
对此:
<behavior name="NewBehavior">
<clientCredentials>
<windows allowedImpersonationLevel="Impersonation" />
</clientCredentials>
</behavior>
有关详细信息,请查看此文章:WCF 中的模拟和委托