我在DMZ网络中有三个没有任何AD的Windows Server 2012 R2。两台服务器是带有ASP.NET的前端Web服务器,另一台是具有SQL Server和前端服务器用于共享数据的网络共享。
我的问题是如何配置应用程序池标识和网络共享,以便ASP.NET应用程序可以读写网络共享?
当您可以将域帐户用于应用程序池标识但此安装程序中没有可用的AD时,这很简单,可以使用AD。
答案 0 :(得分:0)
自从我成功设置服务器后,我将回答我自己的问题。这就是我所做的:
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管理器我收到以下错误对话框:&#34;执行此操作时出错。细节:价值不在预期范围内。&#34;
尝试从命令行设置应用程序池标识我收到类似的错误:
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应用程序设置为使用该应用程序,它可以毫无问题地访问网络共享。
答案 1 :(得分:0)
我遇到了同样的问题,但无法以明文形式提供密码,所以我进一步挖掘并发现了这篇文章: http://social.technet.microsoft.com/wiki/contents/articles/30344.custom-iis-app-pool-identity-value-does-not-fall-within-the-expected-range.aspx
诊断的关键步骤是查看正确的事件:
为了弄清楚如何解决这个问题,我进入了事件查看器。应用程序日志中没有任何内容,因此我转到Applications and Services Logs =&gt; Microsoft =&gt; Windows =&gt; IIS的配置。此处的日志默认处于禁用状态,因此必须启用它们。 (为此,请右键单击日志,然后选择“启用日志”。)启用后,重新运行尝试设置身份,并刷新视图(“操作”窗格或F5),瞧!,现在我们有更多信息关于错误。在结果中有两个错误(事件ID 42和43)。
我遇到了与文章相同的事件错误:
ID 42:无法初始化&#39; IISWASOnlyAesProvider&#39;加密 提供者 &#39; \ \ C:\ Windows \ System32下\ INETSRV \设置\的applicationHost.config&#39 ;. 请检查您的配置。
ID 43:加密属性失败 &#39; Microsoft.ApplicationHost.AesProtectedConfigurationProvider&#39;
然后我做了以下事情:
c:\windows\System32\inetsrv\config
)<configProtectedData><providers>
部分替换为旧部分(c:\windows\System32\inetsrv\config\applicationHost.config
)然后我可以再次为应用程序池设置自定义标识。
答案 2 :(得分:0)
有类似的问题。重新安装IIS管理器并获得一个新的applicationHost.config 当我对新旧文件执行WinDiff时,我注意到SessionKey不同。现在工作。 AesProvider和IISWASOnlyAesProvider