在 Windows Server 2016 @ Azure 云服务上设置 AppPool 标识会抛出 COMException“在缓存中找不到目录属性”。

毛纺

以下代码在 Azure 来宾操作系统系列 5(运行 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: 在缓存中找不到目录属性。

更多信息

在 CommitChanges 处抛出异常,但仅当我们有代码设置 AppPool 标识时(START ISSUE 和 END ISSUE 之间的 4 行)。因此在设置 AppPool 身份时会发生此问题。

此代码已投入生产多年,在本地 Windows 服务器和 Azure 来宾操作系统系列 4 上运行良好。我们以提升的权限(使用<Runtime executionContext="elevated"/>)和具有管理权限的命令行运行代码同样的例外,但仅限于 WinSrv2016 Azure 云。

解决方法:

如果我们按照此处所述在部署上重新生成机器密钥,我们将不再遇到此问题。

问题:

这是正在解决的 OS Family 5 Azure 云服务部署的已知问题吗?有没有不那么突兀的建议来解决这个问题?

我也在我这边进行了测试。当我手动设置应用程序池标识(远程桌面到 Web 角色并使用 IIS 管理器重置标识)时,我可以重现密钥集不存在的问题。

在此处输入图片说明

如您发布的文章中所述,该问题是由机器密钥损坏引起的。我建议您在云服务反馈页面上记录此问题。

https://feedback.azure.com/forums/169386-cloud-services-web-and-worker-role

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档