【问题标题】:How do you setup an IIS Web App so it can access a network share without an AD?如何设置 IIS Web 应用程序以便它可以在没有 AD 的情况下访问网络共享?
【发布时间】:2014-06-20 18:50:05
【问题描述】:

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

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

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

【问题讨论】:

    标签: iis windows-server-2012 iis-8 windows-server-2012-r2 iis-8.5


    【解决方案1】:

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

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

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

    3) 将用户包含在 IIS_IUSRS 组中,间接为其授予“作为批处理作业登录”权限。

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

    aspnet_regiis -ga <your_app_pool_user>
    

    查看更多:How To: Create a Service Account for an ASP.NET 2.0 Application (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 em> 文件。不幸的是,密码以明文结尾。

    <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 应用程序设置为使用该应用程序,它可以毫无问题地访问网络共享。

    【讨论】:

      【解决方案2】:

      我有同样的问题,但不能让密码以明文形式显示,所以我进一步挖掘并找到了这篇文章: 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:无法初始化“IISWASOnlyAesProvider”加密 提供者在 '\?\C:\windows\system32\inetsrv\config\applicationHost.config'。 请检查您的配置。

      ID 43:加密属性失败 'Microsoft.ApplicationHost.AesProtectedConfigurationProvider'。

      然后我做了以下事情:

      • 恢复旧版本的 ConfigEncKey.key 文件(到 c:\windows\System32\inetsrv\config
      • &lt;configProtectedData&gt;&lt;providers&gt; 部分替换为旧部分(在 c:\windows\System32\inetsrv\config\applicationHost.config 中)

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2014-01-08
          • 2012-07-16
          • 2015-12-09
          • 1970-01-01
          • 1970-01-01
          • 2013-10-28
          • 2017-09-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多