在 IIS 8 中设置应用程序池的自定义标识不起作用。值不在预期范围内

在 IIS 8 中设置应用程序池的自定义标识不起作用。值不在预期范围内

这是新域中新设置的服务器。

我向 IIS 添加了网站并为其创建了应用程序池。当我尝试设置其他用户(身份)来运行应用程序池时,我收到错误。

There was an error while performing this operation. 
Details :
Value does not fall within expected range.

该用户是域用户并且属于管理员组的一部分,我还将他添加到了 IIS_IUSRS 组 - 但是没有成功。

我尝试使用我的用户帐户,但也没用。只有 localservice 或 localsystem 可以使用,没有自定义用户。由于事件日志为空,我束手无策。我删除了网站,删除了 apppool,重新创建了很多次,但都没有成功。

Windows 服务器 2012,IIS 8

答案1

我在 Windows Server 2012 中也遇到了这个问题。尝试从命令行设置应用程序池标识时,您会收到类似的错误:

C:> appcmd set config /section:applicationPools 
     /[name='test-pool'].processModel.identityType:SpecificUser 
     /[name='test-pool'].processModel.userName:MyAccountName 
     /[name='test-pool'].processModel.password:P@ssw0rd

ERROR ( hresult:80070057, message:Failed to commit configuration changes.
  The parameter is incorrect.
 )

如果删除最后一个参数,该命令将成功更改身份类型并设置用户名。我一直不明白为什么我无法设置密码,所以我反驳说要编辑我的应用程序主机配置直接输入文件。不幸的是,密码是明文的。

<configuration>
   ...
    <system.applicationHost>
        <applicationPools>
            ...
            <add name="test-pool" managedRuntimeVersion="v4.0">
                <processModel identityType="SpecificUser" 
                  userName="MyAccountName" password="P@ssw0rd" />
            </add>
            ...
        </applicationPools>
        ...
    </system.applicationHost>
    ...
</configuration>

除了配置应用程序池以使用特定帐户之外,我还做了以下操作:

1) 将用户纳入 IIS_IUSRS 组,间接授予其以批处理作业形式登录的权限。

2)运行以下命令为用户授予权限

aspnet_regiis -ga <your_app_pool_user>

查看更多:如何:为 ASP.NET 2.0 应用程序创建服务帐户 (MSDN)

3)重新启动 WAS 和 IIS,以确保对帐户组成员身份的更改生效。

C:> net stop was /y
C:> net start w3svc

答案2

我在新的 IIS 10 部署中遇到了这个问题。我们的网络团队从旧服务器复制了 applicationhost.config 文件,这导致了这个问题。在 IIS 10 中,有两个新设置可以加密应用程序池标识的密码。由于 IIS 7 配置文件没有这些加密设置,因此 IIS 在分配新用户时会抛出此错误。我只是从全新的服务器版本中复制了设置,它就开始正常工作了。将这两个设置添加到现有的设置中:

<configProtectedData>
<providers>

    <add name="IISCngProvider" type="Microsoft.ApplicationHost.CngProtectedConfigurationProvider" description="Uses Win32 Crypto CNG to encrypt and decrypt" keyContainerName="iisCngConfigurationKey" useMachineContainer="true" />
    <add name="IISWASOnlyCngProvider" type="Microsoft.ApplicationHost.CngProtectedConfigurationProvider" description="(WAS Only) Uses Win32 Crypto CNG to encrypt and decrypt" keyContainerName="iisCngWasKey" useMachineContainer="true" />

</providers>
</configProtectedData>

相关内容