在 Windows 服务器 2016 @ Azure 云服务上设置 AppPool 标识抛出 COMException“在缓存中找不到目录 属性。”
Setting AppPool Identity on Windows Server 2016 @ Azure Cloud Service throw COMException “directory property cannot be found in the cache.”
以下代码 在 Azure Guest OS Family 5 上执行时失败(Cloud Service webrole 运行ning Windows Server 2016) :
using (var serverManager = new ServerManager())
{
ApplicationPool applicationPool = serverManager.ApplicationPools.Add(name);
applicationPool.AutoStart = true;
applicationPool.ManagedPipelineMode = ManagedPipelineMode.Integrated;
applicationPool.ManagedRuntimeVersion = "v4.0";
// START ISSUE:
applicationPool.ProcessModel.IdentityType = ProcessModelIdentityType.SpecificUser;
applicationPool.ProcessModel.UserName = username;
applicationPool.ProcessModel.Password = userPassword;
applicationPool.ProcessModel["idleTimeoutAction"] = 1;
// END ISSUE
serverManager.CommitChanges();
}
异常:
System.Runtime.InteropServices.COMException: The directory property
cannot be found in the cache.
更多信息
在 CommitChanges 处抛出异常,但只有当我们有代码设置 AppPool 标识时(START ISSUE 和 END ISSUE 之间的 4 行)。所以这个问题发生在设置 AppPool 身份时。
此代码已投入生产多年,在本地 Windows 服务器和 Azure Guest OS 系列 4 上运行良好。我们 运行 具有提升权限的代码(使用 <Runtime executionContext="elevated"/>
) 和从具有管理权限的命令行。相同的异常,但仅限于 WinSrv2016 Azure 云。
解决方法:
如果我们将部署中的机器密钥重新生成为 described here,我们将不再遇到此问题。
问题:
这是正在解决的 OS 系列 5 Azure 云服务部署的已知问题吗?有没有解决此问题的不那么突兀的建议?
我这边也测试过。当我手动设置应用程序池标识(远程桌面到 Web 角色并使用 IIS 管理器重置标识)时,我可以重现密钥集不存在的问题。
正如您post文章中所述,问题是由机器密钥损坏引起的。我建议您在云服务反馈页面上记录此问题。
https://feedback.azure.com/forums/169386-cloud-services-web-and-worker-role
以下代码 在 Azure Guest OS Family 5 上执行时失败(Cloud Service webrole 运行ning Windows Server 2016) :
using (var serverManager = new ServerManager())
{
ApplicationPool applicationPool = serverManager.ApplicationPools.Add(name);
applicationPool.AutoStart = true;
applicationPool.ManagedPipelineMode = ManagedPipelineMode.Integrated;
applicationPool.ManagedRuntimeVersion = "v4.0";
// START ISSUE:
applicationPool.ProcessModel.IdentityType = ProcessModelIdentityType.SpecificUser;
applicationPool.ProcessModel.UserName = username;
applicationPool.ProcessModel.Password = userPassword;
applicationPool.ProcessModel["idleTimeoutAction"] = 1;
// END ISSUE
serverManager.CommitChanges();
}
异常:
System.Runtime.InteropServices.COMException: The directory property cannot be found in the cache.
更多信息
在 CommitChanges 处抛出异常,但只有当我们有代码设置 AppPool 标识时(START ISSUE 和 END ISSUE 之间的 4 行)。所以这个问题发生在设置 AppPool 身份时。
此代码已投入生产多年,在本地 Windows 服务器和 Azure Guest OS 系列 4 上运行良好。我们 运行 具有提升权限的代码(使用 <Runtime executionContext="elevated"/>
) 和从具有管理权限的命令行。相同的异常,但仅限于 WinSrv2016 Azure 云。
解决方法:
如果我们将部署中的机器密钥重新生成为 described here,我们将不再遇到此问题。
问题:
这是正在解决的 OS 系列 5 Azure 云服务部署的已知问题吗?有没有解决此问题的不那么突兀的建议?
我这边也测试过。当我手动设置应用程序池标识(远程桌面到 Web 角色并使用 IIS 管理器重置标识)时,我可以重现密钥集不存在的问题。
正如您post文章中所述,问题是由机器密钥损坏引起的。我建议您在云服务反馈页面上记录此问题。
https://feedback.azure.com/forums/169386-cloud-services-web-and-worker-role