我们正在尝试使用 Azure Storage Emulator 和 Azure CosmosDB Emulator 进行本地开发以及作为 CI/CD 构建一部分的单元测试。以下是有关这些模拟器的详细信息的主要链接:https : //docs.microsoft.com/en-us/azure/cosmos-db/local-emulator
作为这项工作的一部分,我们需要某种方式来启动和停止这两个模拟器。我们曾尝试在 Docker 上运行,但由于防病毒干预等原因,它有其自身的问题,所以我不想在这篇文章中谈论该选项。
这是我们的主要要求 - 在机器重启/启动期间启动模拟器。在 Azure 存储模拟器的情况下,我们能够通过 Windows 任务计划程序调用适当的命令来启动模拟器,这非常容易。所以我们在 CosmosDB 模拟器上尝试了相同的方法,但它只是失败了“灾难性故障(0x8000FFFF)”错误,没有太多细节来解决问题。这是在 Windows Server 2016 Standard 机器上,但我在 Windows 10 Enterprise 机器上也得到了相同的结果。
从那以后,我尝试了其他一些选项,如下所示:
当我手动运行批处理文件而不是通过任务调度程序时,这有效。
使用 PowerShell 的相同方法和与上述相同的结果。
最后,我使用 Topshelf 创建了一个 Windows 服务,该服务在使用 Visual Studio 或调试代码运行时再次起作用,但在我安装服务并在服务控制台中运行时不起作用。
我们尝试过使用不同的用户帐户,也使用具有管理员权限的帐户。我错过了在原始帖子中添加以下详细信息:
如果由我或我的团队成员手动运行 CosmosDB 模拟器将启动,但是当它被任务调度程序调用时,以下错误将写入系统日志
特定于应用程序的权限设置不会将具有 CLSID {D63B10C5-BB46-4990-A94F-xxxxxxxxxxxx} 和 APPID {9CA88EE3-ACB7-47C8-AFC4-xxxxxxxxxxxx} 的 COM 服务器应用程序的本地激活权限授予用户 {Damain}{ UserName} SID (S-1-5-21-174494438-4207865126-xxxxxxxxx-xxxxx) 来自地址 LocalHost (Using LRPC) 在应用程序容器中运行的 Unavailable SID (Unavailable)。可以使用组件服务管理工具修改此安全权限。
有没有其他选择可以让这个工作?
在下面发布 David Noble 的答案,以便其他人可以使用它:
请允许我自我介绍。我是 Cosmos DB 模拟器的开发所有者。谢谢你的写作。
要通过任务调度程序启动模拟器,请尝试使用以下命令行选项:/noui。还请确保任务在属于管理员组的帐户下以最高权限运行。
我刚刚定义了这样一个任务,当我登录到我的 Windows 10 开发框时运行。它在我属于本地管理员组的域帐户下运行此命令行:“C:\Program Files\Azure Cosmos DB Emulator\CosmosDB.Emulator.exe”/noui
我确认当我运行这个任务时:
• 没有/noui 选项,我看到了您看到的错误:E_UNEXPECTED (0x8000FFFF),灾难性故障。
• 使用/noui 选项后,模拟器可以正确启动(没有任务栏图标,也没有按预期打开数据浏览器),而且我可以使用数据浏览器创建文档。
请试一试,让我们知道它是怎么回事。如果需要,我会在这里提供帮助。
| 归档时间: |
|
| 查看次数: |
935 次 |
| 最近记录: |