3

我有一个 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 的框架版本文件夹。

4

5 回答 5

1

您需要在应用程序的文件夹级别为您在自定义身份中指定的用户提供显式读取或读/写。右键单击包含文件夹,然后单击“属性”并将具有应用程序所需权限的用户添加到安全选项卡。

于 2012-12-13T19:10:38.510 回答
1

结果我需要一个通配符映射到 aspnet.isapi.dll,虽然我不知道为什么。

如果没有自定义标识,应用程序可以在没有通配符映射的情况下正常工作。使用自定义身份,我需要映射。在另一台服务器上,自定义标识可以在没有映射的情况下正常工作。奇怪的。

于 2012-12-17T22:25:50.007 回答
0

您是否已经检查过目录浏览设置?

http://www.iis.net/configreference/system.webserver/directorybrowse

于 2012-12-17T10:58:05.293 回答
0

现在您使用的是与默认用户不同的用户,请确保您已将匿名身份验证设置为使用应用程序池用户。也可能与@Gabe Thorns 提到的内容有关,这可能是通配符映射的问题。如果您没有设置通配符映射来运行 asp 进程,那么它将尝试查找文件,避免使用 asp 处理器。

希望有帮助。

于 2012-12-17T19:16:23.637 回答
0

您是否明确授予对应用程序文件夹上的应用程序池标识的权限?

该帐户应该类似于IIS AppPool\MyAppPoolName

在此处输入图像描述

更多信息可以在这里找到: http ://www.iis.net/learn/manage/configuring-security/application-pool-identities

于 2012-12-17T20:37:44.070 回答