过去几周我的开发工作站(Windows 8.1)上发生了一些事情,要求我使用"加载用户配置文件"运行我的应用程序池。设置为False或不以标识设置为ApplicationPoolIdentity运行。如果我要创建一个新的应用程序池,使用ApplicationPoolIdentity作为标识并使用loadUserProfile = true,则在尝试在浏览器中加载应用程序时会发生以下情况:
Windows cannot copy file \\?\C:\Users\Default\AppData\Local\Microsoft\VSCommon\12.0\SQM\sqmdata-7236-039-00000.sqm to location \\?\C:\Users\[Name of App Pool]\AppData\Local\Microsoft\VSCommon\12.0\SQM\sqmdata-7236-039-00000.sqm. This error may be caused by network problems or insufficient security rights.
Windows cannot find the local profile and is logging you on with a temporary profile. Changes you make to this profile will be lost when you log off.
Windows cannot log you on because your profile cannot be loaded. Check that you are connected to the network, and that your network is functioning correctly. DETAIL - Only part of a ReadProcessMemory or WriteProcessMemory request was completed.
The Windows Process Activation Service failed to create a worker process for the application pool '[App Pool Name]'. The data field contains the error number.
Application pool '[App Pool Name]' is being automatically disabled due to a series of failures in the process(es) serving that application pool.
我已经看到了一个常见的"修复"对于此here和here,它基本上是为了关闭配置文件加载。是的,这会让问题消失,但这并没有找到根本原因。我知道可以使用此配置运行,因为我有一台支持配置的Windows 2012机器。在这种情况下,使用设置为ApplicationPoolIdentity且loadUserProfile = true的新应用程序池命中应用程序实际上会创建新的用户配置文件(我可以在C:\Users
中创建配置文件文件夹时观看)并且应用程序快速运行。更糟糕的是,我知道几周前这个配置在问题机器上运行了。我创建了许多应用程序池,它们在C:\Users
文件夹下有自己的配置文件和文件夹。这些应用程序池现在可以正常使用ApplicationPoolIdentity和loadUserProfile = true设置。只是新的应用程序池拒绝运行并加载用户配置文件。
有没有人对可能发生的事情有任何见解?
修改:我阅读了this recent article的底部。说设置可以打开时有点矛盾,但也说:
只有标准应用程序池(DefaultAppPool和Classic .NET AppPool)在磁盘上具有用户配置文件。如果管理员创建新的应用程序池,则不会创建用户配置文件。
但是,如果需要,可以通过将LoadUserProfile属性设置为" true"来配置IIS应用程序池以加载用户配置文件。
我很困惑。
答案 0 :(得分:4)
事件日志警告中列出的SQM文件是由Windows或Visual Studio更新创建的。当用户配置文件服务或应用程序池运行并尝试创建新配置文件时,它会尝试将该文件复制到配置文件。 SQM文件需要管理员权限才能进行复制。用户配置文件服务或应用程序池没有足够的权限来复制文件,生成错误,并且未创建用户配置文件。如果没有用户配置文件,则应用程序池无法运行,因为它没有用于存储数据的隔离安全位置。
从源目录中删除或删除SQM文件,并在初始化应用程序池时成功创建用户配置文件。您还可以更改SQM文件的权限,但我不确定适当的权限应该是什么。用户配置文件服务作为“LocalSystem帐户”运行。有关权限信息,请参阅其documentation。我不清楚应用程序池标识本身是用于执行复制操作还是本地系统帐户。
如果您从源目录中删除该文件,您也可以手动将文件复制到它尝试去的位置。
在对SQM进行了简短的搜索之后,它似乎传统上被用作“服务质量管理”。通常它会包含用指标,日志或某些东西发回给程序作者的信息。我不知道这个文件是否属于这种情况。因此,将它包含在新配置文件中似乎并不重要。
我不能100%赞成这个答案,因为我在其他一些问题的回答中附上了评论。我无法在打开的50个浏览器标签中找到它的链接以进行故障排除。那个人值得感谢,因为我相信这是一个比通过将所有资源集中在一起来破坏服务器安全性更好的解决方案,就像在IIS 6中一样。
P.S。如您的评论中所述,已提交bug report。