1

我在 DMZ 网络中有三个没有任何 AD 的 Windows Server 2012 R2。两台服务器是使用 ASP.NET 的前端 Web 服务器,一台具有 SQL Server 和一个网络共享,两个前端服务器都使用该网络共享来共享数据。

我的问题是如何配置应用程序池标识和网络共享,以便 ASP.NET 应用程序可以读取和写入网络共享?

当您可以将域帐户用于应用程序池身份但此设置中没有可用的 AD 时,这很简单。

4

3 回答 3

0

自从我成功设置服务器以来,我将回答我自己的问题。这就是我所做的:

1)在所有三台服务器上创建一个具有相同用户名和密码的帐户。确保不会过期或必须更改。

2) 创建网络共享并赋予新帐户读/写权限。我还测试了我可以使用新帐户从前端服务器连接,以验证没有防火墙阻碍。

3) 将用户包含在 IIS_IUSRS 组中,间接赋予它作为批处理作业登录的权限。

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

aspnet_regiis -ga <your_app_pool_user>

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

5) 重新启动 WAS 和 IIS 以确保在尝试使用帐户时对帐户组成员身份的更改生效。

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

6)创建一个应用程序池并设置身份。

这是我在尝试设置身份时遇到错误消息的部分。

从 IIS 管理器中,我收到以下错误对话框:“执行此操作时出错。详细信息:值不在预期范围内。”

尝试从命令行设置应用程序池标识时收到类似错误:

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.
 )

当我删除最后一个参数密码时,该命令将成功更改身份类型并设置用户名,但我不知道为什么我无法设置密码,所以我反驳说直接编辑我的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>

7) 最后,我将我的 Web 应用程序设置为使用该应用程序,它可以毫无问题地访问网络共享。

于 2014-06-20T22:07:48.390 回答
0

我有同样的问题,但不能让密码以明文形式显示,所以我进一步挖掘并找到了这篇文章: http ://social.technet.microsoft.com/wiki/contents/articles/30344.custom-iis- app-pool-identity-value-does-not-fall-within-the-expected-range.aspx

诊断的关键步骤是查看正确的事件:

为了弄清楚如何解决这个问题,我进入了事件查看器。应用程序日志中没有任何内容,因此我前往应用程序和服务日志 => Microsoft => Windows => IIS-Configuration。此处的日志默认是禁用的,因此必须启用它们。(为此,右键单击日志,然后选择启用日志。)启用后,重新尝试设置身份,并刷新视图(操作窗格或 F5),瞧!现在我们有了更多信息关于错误。结果中有两个错误(事件 ID 42 和 43)。

我遇到了与文章中相同的事件错误:

ID 42:无法在“\?\C:\windows\system32\inetsrv\config\applicationHost.config”中初始化“IISWASOnlyAesProvider”加密提供程序。请检查您的配置。

ID 43:无法加密属性“Microsoft.ApplicationHost.AesProtectedConfigurationProvider”。

然后我做了以下事情:

  • 恢复旧版本的 ConfigEncKey.key 文件(到c:\windows\System32\inetsrv\config
  • 用旧的部分替换<configProtectedData><providers>部分(在c:\windows\System32\inetsrv\config\applicationHost.config

然后我可以再次为应用程序池设置自定义标识。

于 2015-03-30T13:32:48.397 回答
0

有类似的问题。重新安装 IIS 管理器并获得一个新的 applicationHost.config 当我对新旧文件执行 WinDiff 时,我注意到 SessionKey 不同。现在工作。AesProvider 和 IISWASOnlyAesProvider

于 2015-05-13T17:21:10.950 回答