无法将域用户的IIS 8中的密码设置为ApplicationPool Identity

我试图在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”。

然后我做了以下几点:

  • 恢复旧版本的ConfigEncKey.key文件(到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