我有一个ASP.Net MVC3应用程序,它在我的IIS 6服务器上的默认应用程序池中运行良好。
我需要让它在自己的服务帐户下运行,因此我创建了一个新的应用程序池并将应用程序移入其中。使用默认设置,应用程序继续正常工作。
我在应用程序池上设置了自定义标识,现在应用程序只是给出了“目录列表被拒绝”错误。
我尝试将身份切换回网络服务,然后应用程序再次开始工作。
什么可能阻止应用程序使用自定义标识运行?这就像ASP.Net甚至没有启动。
我已经运行aspnet_regiis -ga <domain\username>
并将该帐户添加到IIS_WPG组,因此身份帐户应该可以访问ASP.Net。
更多信息
我一直在使用Process Monitor进行一些诊断,它显示aspnet_isapi.dll没有加载自定义标识。
当身份是“网络服务”时,我可以看到正在加载aspnet_isapi.dll,然后是webengine4.dll。这在NTLM身份验证发生后立即发生。
使用自定义标识,发生NTLM身份验证,然后w3wp进程才开始查找默认文件(Default.aspx,Default.htm等)。
我已经检查过,该帐户可以访问存储这些DLL的框架版本文件夹。
答案 0 :(得分:1)
您需要在自定义标识中指定您在应用程序的文件夹级别显式读取或读取/写入的用户。右键单击包含文件夹,然后单击“属性”,将具有应用程序所需权限的用户添加到安全选项卡。
答案 1 :(得分:1)
原来我需要一个aspcard.isapi.dll的通配符映射,虽然我不知道为什么。
没有自定义标识,应用程序在没有通配符映射的情况下工作正常。使用自定义标识我需要映射。在另一台服务器上,自定义标识在没有映射的情怪异。
答案 2 :(得分:0)
答案 3 :(得分:0)
现在您使用的是其他用户,然后是默认用户,请确保已将匿名身份验证设置为使用应用池用户。可能还有一些与@Gabe Thorns提到的相关的东西,它可能是通配符映射的问题。如果您没有设置通配符映射来运行asp进程,那么它将尝试查找文件,避免使用asp处理器。
希望有所帮助。
答案 4 :(得分:0)
您是否已明确授予应用程序文件夹上应用程序池标识的权限?
帐户应该是IIS AppPool\MyAppPoolName
有关这方面的更多信息,请访问: http://www.iis.net/learn/manage/configuring-security/application-pool-identities