我试图在IIS 8(Windows 2012)中将域用户帐户设置为ApplicationPool Identity。 当尝试使用IISpipe理控制台时,我总是得到一个错误:
价值不在预期范围内。
当尝试使用appcmd.exe设置身份时,它会在设置用户名和密码的命令或仅设置密码的命令上失败。 设置用户名是没有问题的。
尝试设置用户名和密码[FAIL]:
>appcmd set config /section:applicationPools /[name='AppPoolName'].processModel.identityType:SpecificUser /[name='AppPoolName'].processModel.userName:DOMAIN\Username /[name='AppPoolName'].processModel.password:P4ssW0rd Applied configuration changes to section "system.applicationHost/applicationPools" for "MACHINE/WEBROOT/APPHOST" at configuration commit path "MACHINE/WEBROOT/APPHOST" ERROR ( hresult:80070057, message:Failed to commit configuration changes. The parameter is incorrect. )
试着只设置用户名[SUCCESS]:
>appcmd set config /section:applicationPools /[name='AppPoolName'].processModel.identityType:SpecificUser /[name='AppPoolName'].processModel.userName:DOMAIN\Username Applied configuration changes to section "system.applicationHost/applicationPools" for "MACHINE/WEBROOT/APPHOST" at configuration commit path "MACHINE/WEBROOT/APPHOST"
尝试成功设置用户名后设置密码[FAIL]:
>appcmd set config /section:applicationPools /[name='AppPoolName'].processModel.identityType:SpecificUser /[name='AppPoolName'].processModel.password:P4ssW0rd Applied configuration changes to section "system.applicationHost/applicationPools" for "MACHINE/WEBROOT/APPHOST" at configuration commit path "MACHINE/WEBROOT/APPHOST" ERROR ( hresult:80070057, message:Failed to commit configuration changes. The parameter is incorrect. )
我将域用户添加到IIS_IUSRS组,并允许它“作为服务login”。
任何build议,我可能做错了?
按照如何设置IIS Web应用程序,以便它可以访问没有AD的networking共享?
我有同样的问题,但不能让明文密码,所以我深入一点,发现这篇文章: 自定义IIS应用程序池标识:值不在预期的范围内
诊断的关键步骤是查看正确的事件:
为了弄清楚如何解决这个问题,我进入了事件查看器。 应用程序日志中没有任何内容,所以我转到了Applications and Services Logs => Microsoft => Windows => IIS-Configuration。 这里的日志默认是禁用的,所以必须启用它们。 (为此,请右键单击日志,然后select启用日志。)一旦启用,重新运行尝试设置标识,并刷新视图(操作窗格或F5),瞧!现在我们有更多的信息在错误。 结果是两个错误(事件ID 42和43)。
我在文章中遇到了同样的事件错误:
ID 42:无法初始化'\?\ C:\ windows \ system32 \ inetsrv \ config \ applicationHost.config'中的'IISWASOnlyAesProvider'encryption提供程序。 请检查您的configuration。
ID 43:无法encryption属性“Microsoft.ApplicationHost.AesProtectedConfigurationProvider”。
然后我做了以下几点:
c:\windows\System32\inetsrv\config ) c:\windows\System32\inetsrv\config\applicationHost.config )replace<configProtectedData><providers> 然后,我可以再次为应用程序池设置一个自定义标识。
检查在此应用程序池上configuration的应用程序的绑定,如果它们有任何不正确的绑定,例如。 无效的字符,空格等等。
资源
我也遇到了Windows Server 2012中的这个问题。
如果在使用appcmd(密码)时删除最后一个参数,则将成功更改标识types并设置用户名。
我从来没有找出为什么我不能设置密码,所以我反驳编辑我的applicationHost.config文件直接。 不幸的是密码是明文。
<configuration> ... <system.applicationHost> <applicationPools> ... <add name="test-pool" managedRuntimeVersion="v4.0"> <processModel identityType="SpecificUser" userName="MyAccountName" password="P@ssw0rd" /> </add> ... </applicationPools> ... </system.applicationHost> ... </configuration>
除了将应用程序池configuration为使用特定帐户之外,我还做了以下操作:
1)包括IIS_IUSRS组中的帐户,间接地将其login为批处理作业权限。
2)运行以下命令授予用户权限
aspnet_regiis -ga <your_app_pool_user>
查看更多: 如何:为ASP.NET 2.0应用程序创build服务帐户(MSDN)
3)重新启动WAS和IIS,以确保更改帐户组成员资格。
C:> net stop was /y C:> net start w3svc
尝试更改/section:applicationPools到/section:system.applicationHost/applicationPools并添加/commit:apphost到最后
appcmd set config /section:system.applicationHost/applicationPools /[name='AppPoolName'].processModel.identityType:SpecificUser /[name='AppPoolName'].processModel.password:P4ssW0rd / commit:apphost
您可以从另一个服务器获取私钥,并通过首先从另一个工作的IIS服务器导出密钥将其导入到此服务器:C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319> aspnet_regiis -px“iisWasKey” “C:\ temp \ AESKeys.xml”-pri
其次,您可以在损坏的机器上恢复该密钥(将密钥复制到其他服务器并放在同一位置):C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319> aspnet_regiis -pi“iisWasKey”“C :\ TEMP \ AESKeys.xml”
最后,编辑c:\ windows \ system32 \ inetsrv \ applicationhost.config,并使用已知工作服务器的configprotecteddata节来replace已经在这个文件中的文件。
它看起来像这个部分:
如果一切顺利,您可以通过创build一个应用程序池来进行testing,然后转到高级设置,并以DOMAIN \ user或其他某个用户的身份运行它。
托尼Trus