在 Windows Server 2008 上的 IIS 7 中,应用程序池可以作为“ApplicationPoolIdentity”帐户而不是 NetworkService 帐户运行。
如何为此“ApplicationPoolIdentity”帐户分配权限。它不会在机器上显示为本地用户。它不会在任何地方显示为一个组。没有什么像它出现在任何地方的远程。当我浏览本地用户、组和内置帐户时,它没有出现在列表中,列表中也没有出现任何类似的内容。到底是怎么回事?
我不是唯一遇到此问题的人:请参阅IIS 7.5 + Windows 7中的ApplicationPoolIdentity问题示例。
“不幸的是,这是 Windows Server 2008/Windows Vista 上的对象选择器的一个限制——正如一些人已经发现的那样,您仍然可以使用icacls等命令行工具操作应用程序池标识的 ACL 。”
我的一个应用程序池中有一个应用程序,其虚拟路径为/Site/login.aspx. 我想删除它,但它不再存在于我的计算机上,这导致我在设置 AppFabric 时出现问题。
我知道您可以通过在 IIS 中重新创建应用程序然后点击删除来删除这些幻影应用程序。这将从池中删除应用程序,但在这种情况下,由于/login.aspx在虚拟路径中,我无法重新创建应用程序
任何想法如何删除这个错误条目?
我们即将在一些新服务器上部署一堆站点。我有以下关于应用程序池的问题:
每个网站有一个应用程序池似乎是可取的。这种方法有什么注意事项吗?一个应用程序池是否会占用所有 CPU、内存等...?
什么时候应该在应用程序池中允许多个工作进程?什么时候不应该?
是否可以使用私有内存限制来防止一个应用程序池干扰另一个应用程序池?将它设置得太低会导致有效请求在没有得到有效响应的情况下回收应用程序池吗?
私有和虚拟内存限制有什么区别?
是否有令人信服的理由不让每个站点运行一个应用程序池?
我在 Windows Server 2003 上使用 IIS 6.0 托管了多个网站。其中一些使用 .Net 1.1 框架,而另一些使用 .Net 2.0。我目前为每个框架设置了应用程序池。是否还有其他原因需要添加额外的应用程序池?
在IIS 5.0中,默认情况下应用程序池的身份帐户是ASPNET,网站除非启用模拟,否则在其应用程序池的身份帐户下运行。
但是在 IIS 7.0 中,有两个地方可以配置我的网站将使用的帐户。在应用程序池级别和网站级别。
我希望网站标识覆盖应用程序池标识,但我刚刚看到情况并非如此。
那么,有什么区别呢?
我有一个非常简单的站点,在 Windows Server 2008 SP2 上的 IIS 7 中只有静态文件。
当我尝试访问任何静态文件时,出现 500 错误。如果我将 html 文件重命名为具有 aspx 扩展名,则它可以正常工作。
使用应用程序池的内置标识时,该站点也能正常工作。当我切换到对应用程序池使用自定义帐户时会出现问题。我尝试使用本地和域帐户来运行应用程序池。
我已完全控制网站目录和文件中的这些帐户。
打开跟踪会显示以下错误消息:
ModuleName: IIS Web Core
Notification: 2
HttpStatus
: 500
HttpReason: Internal Server Error
HttpSubStatus: 0
ErrorCode: 2147943746
ConfigExceptionInfo
Notification: AUTHENTICATE_REQUEST
ErrorCode: 未提供所需的模拟级别,或提供的模拟级别是无效的。(0x80070542)
我在谷歌上搜索错误代码没有任何运气。
我一直在 IIS 中使用两个不同的 ASP.NET Web 应用程序运行负载测试。测试使用 5、10、25 和 250 个用户代理运行。在具有 8 GB RAM、Windows 7 Ultimate x64 的盒子上进行测试。运行 IIS 和负载测试项目的同一个框。
我跑了很多次,数据非常一致。对于每次加载,如果我在应用程序池中将“启用 32 位应用程序”设置为 True,我会看到较低的“平均页面时间(秒)”和较低的“平均响应时间(秒)”。负载越高,差异越明显。在非常高的负载下,如果应用程序池是 64 位的,Web 应用程序开始抛出错误 (503),但如果设置为 32 位,它们可以跟上。
为什么 32 位应用程序池效率如此之高?为什么应用程序池的默认值不是 32 位?
是否可以为 ApplicationPoolIdentity 虚拟帐户设置环境变量?这方面的文档几乎不存在。
我想为该应用程序池注入一个环境变量。似乎人们为应用程序池创建唯一帐户来执行此操作,但我所了解的有关虚拟帐户的内容意味着我不必这样做,但根本没有解释如何执行此操作。
我有一个小的 ASP.NET 测试脚本,它打开与域中另一台机器上的 SQL Server 数据库的连接。它并非在所有情况下都有效。
设置:
W2K8R2 下的 IIS 7.5 尝试连接到远程 SQL Server 2008 R2 实例。所有机器都在同一个域中。
将 ApplicationPoolIdentity 用于网站时,它无法连接到 SQL Server,原因如下:
用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败。说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息。
异常详细信息:System.Data.SqlClient.SqlException:用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败。
但是,如果我将 Process Model Identity 切换为 NETWORK SERVICE 或我的域帐户,则数据库连接成功。
我已经在 SQL Server 中授予了 \$ 访问权限。
我没有在网站上进行任何类型的身份验证,它只是一个简单的脚本,用于打开与数据库的连接以确保其正常工作。
我启用了匿名身份验证并设置为使用应用程序池标识。
我如何使这项工作?为什么 ApplicationPoolIdentity 试图使用匿名登录?更好的是,如何让它停止使用匿名登录?
我一直在阅读Scott Guthrie 关于自动启动 ASP.NET 应用程序的文章,其中提供了有关如何设置 ASP.NET 4.0 应用程序以自动启动的示例。
<applicationPools>
<add name="MyAppWorkerProcess" managedRuntimeVersion="v4.0"
startMode="AlwaysRunning" />
</applicationPools>
<!--...-->
<sites>
<site name="MySite" id="1">
<application path="/" serviceAutoStartEnabled="true"
serviceAutoStartProvider="PreWarmMyCache" />
</site>
</sites>
<!--...-->
<serviceAutoStartProviders>
<add name="PreWarmMyCache" type="PreWarmCache, MyAssembly" />
</serviceAutoStartProviders>
Run Code Online (Sandbox Code Playgroud)
他的帖子不清楚以下配置是否会自动启动 ASP.NET 应用程序:
<applicationPools>
<add name="MyAppWorkerProcess" managedRuntimeVersion="v4.0"
startMode="AlwaysRunning" />
</applicationPools>
<!--...-->
<sites>
<site name="MySite" id="1">
<application path="/" serviceAutoStartEnabled="true" />
</site>
</sites>
Run Code Online (Sandbox Code Playgroud)
这里的区别在于没有指定要启动的类。理想情况下,应用程序将被加载。Application for a Site的文档暗示该serviceAutoStartEnabled属性需要一个serviceAutoStartProvider属性才能工作。但是没有迹象表明如果不提供附加属性会发生什么。
serviceAutoStartProvider需要指定使用serviceAutoStartEnabled?serviceAutoStartProvider指定会发生什么?